[英]Input and Ouput to ECS task in Step function
之前使用 AWS 步驟 function 使用 lambda 編排。這一直工作得很好。 設置每個 lambda 的 result_path 會將 arguments 傳遞給后續的 lambda。
但是,我現在需要運行一個 fargate 任務,然后將 arguments 從該 fargate 任務傳遞給后續的 lambda。 我創建了一個 python 腳本作為容器定義中的入口點。 顯然,在 lambda function 中, handler(event, context)
充當入口點,通過定義return {"return_object": "hello_world"}
很容易將長參數傳遞給 state 機器的下一個 state。
但就我而言,我有一個任務定義,其中包含一個從這個 Dockerfile 創建的容器定義:
FROM python:3.7-slim
COPY my_script.py /my_script.py
RUN ln -s /python/my_script.py /usr/bin/my_script && \
chmod +x /python/my_script.py
ENTRYPOINT ["my_script"]
因此,我能夠調用 state 機器,它將按預期執行 my_script。 但是我如何從這個 python 腳本中獲取 output 並將其傳遞給 state 機器中的另一個 state?
我找到了一些關於如何傳遞輸入的文檔,但沒有找到傳遞輸出的示例。
要從 ECS/Fargate 任務中獲取 output,我認為您必須使用任務令牌集成而不是通常推薦用於 Fargate 任務的運行作業(同步)。 您可以將令牌作為容器覆蓋 ( "TASK_TOKEN": "$$.Task.Token"
) 傳遞。 然后在你的圖像中你需要這樣的邏輯:
client = boto3.client('stepfunctions')
client.send_task_success(
taskToken=os.environ["TASK_TOKEN"],
output=output
)
把它傳回去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.