翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
タイムアウトを使用して実行のスタックを回避する
デフォルトでは、Amazon States Language はステートマシンの定義にタイムアウトを指定しません。明示的なタイムアウトが設定されていないと、Step Functions は多くの場合、アクティビティのワーカーからのレスポンスでしか、タスクが完了したことを知ることができません。エラーが発生した場合、TimeoutSeconds
フィールドに Activity
状態または Task
状態が指定されていないと、実行は、返されることのないレスポンスを待ち続けるため、スタックします。
この状況を回避するには、ステートマシンで 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 States Language ドキュメントの タスク を参照してください。
注記
Amazon States Language の定義の TimeoutSeconds
フィールドを使用してステートマシンのタイムアウトを設定できます。詳細については、「ステートマシン構造」を参照してください。