簡體   English   中英

function 步中 ECS 任務的輸入和輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM