使用超時來避免卡住的執行 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用超時來避免卡住的執行

根據預設,Amazon 州語言不會指定狀態機器定義的逾時。如果沒有明確的逾時,Step Functions 通常僅依賴活動工作者的回應來知道任務已完成。如果出現錯誤,並且未為ActivityTask狀態指定TimeoutSeconds欄位,則執行會卡住等待永遠不會出現的回應。

為了避免這種情況,請在狀態機器中創建時指定合理Task的超時時間。例如:

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "Next": "NextState" }

如果您使用帶有任務令牌的回調(. waitForTaskToken),我們建議您使用活動訊號,並在Task狀態定義中新增HeartbeatSeconds欄位。您可以設定HeartbeatSeconds為小於工作逾時,所以如果您的工作流程因活動訊號錯誤而失敗,您就會知道這是因為工作失敗,而不是工作需要很長時間才能完成。

{ "StartAt": "Push to SQS", "States": { "Push to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken", "HeartbeatSeconds": 600, "Parameters": { "MessageBody": { "myTaskToken.$": "$$.Task.Token" }, "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/push-based-queue" }, "ResultPath": "$.SQS", "End": true } } }

如需詳細資訊,請參閱 Amazon 州語言文件任務狀態中的。

注意

您可以使用 Amazon States 語言定義中的TimeoutSeconds欄位,為狀態機器設定逾時。如需詳細資訊,請參閱国家机结构