タイムアウトを使用して実行のスタックを回避する - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

タイムアウトを使用して実行のスタックを回避する

デフォルトでは、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 フィールドを使用してステートマシンのタイムアウトを設定できます。詳細については、「ステートマシン構造」を参照してください。