本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用逾時來避免卡住的 Step Functions 工作流程執行
根據預設,Amazon 州語言不會指定狀態機器定義的逾時。如果沒有明確的逾時,Step Functions 通常僅依賴活動工作者的回應來知道任務已完成。如果出現錯誤,並且未為Activity
或Task
狀態指定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
欄位,為狀態機器設定逾時。如需詳細資訊,請參閱Step Functions 工作流程的 Amazon 狀態機器結構語言。