[英]How do I use Heartbeat with a Callback Return Step Function in my Lambda Function?
我的 Lambda function 需要將令牌發送回步驟 function 才能繼續,因為這是 state 機器中的一項任務。
看着我的 lambda function 的try/catch
塊,我正在考慮:
SendTaskHeartbeatCommand
和SendTaskSuccessCommand
的順序SendTaskHeartbeatCommand
所需參數SendTaskHeartbeatCommand
添加到catch
塊,然后如果是,它們應該按哪個順序添加 go。當前代碼:
try {
const magentoCallResponse = await axios(requestObject);
await stepFunctionClient.send(new SendTaskHeartbeatCommand(taskToken));
await stepFunctionClient.send(new SendTaskSuccessCommand({output: JSON.stringify(magentoCallResponse.data), taskToken}));
return magentoCallResponse.data;
} catch (err: any) {
console.log("ERROR", err);
await stepFunctionClient.send(new SendTaskFailureCommand({error: JSON.stringify("Error Sending Data into Magento"), taskToken}));
return false;
}
我已閱讀 SendTaskHeartbeatCommand 的 AWS SendTaskHeartbeatCommand
V3 文檔,但對所需的input
感到困惑。
SendTaskHeartbeat 和 SendTaskSuccess API 操作有不同的用途。
當您的任務完成時,您調用 SendTaskSucces 以將此報告回 Step Functions 並提供您的工作流隨后可以處理的任務結果。 您不需要在 SendTaskSuccess 之前調用 SendTaskHeartbeat 並且上面代碼中的用法似乎沒有必要。
SendTaskHeartbeat 是可選的,當您在任務上設置“HeartbeatSeconds”時可以使用它。 當您這樣做時,您需要您的工作人員(即本例中的 Lambda function)在處理工作時發回定期心跳。 我希望在上面的代碼運行 try 塊中的第一行時異步運行。 有心跳的原因是您可以設置比 HeartbeatSeconds 更長的 TimeoutSeconds(或動態使用 TimeoutSecondsPath),因此當工作人員死亡(心跳超時)時快速失敗/重試,同時您仍然允許您的任務花費更長的時間來完成。
也就是說,不清楚為什么要使用 Lambda 的 .waitForTaskToken。通常,您可以只使用默認的請求響應集成模式和 Lambda。這使用 Lambda 的同步調用模式,並且無需您即可將響應返回給您在您的 Lambda 代碼中與 Step Functions 集成。 可能您正在從 SQS 隊列中讀取這些內容以進行並發控制或其他操作。 但如果沒有,只需使用 Request Response。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.