タスク状態からワークフロー実行を開始する - AWS Step Functions

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

タスク状態からワークフロー実行を開始する

AWS Step Functions は、ステートマシンの Task 状態から直接ワークフロー実行を開始できます。これにより、ワークフローを小さなステートマシンに分割し、これらの他のステートマシンの実行を開始できます。これらの新しいワークフロー実行を開始することで、以下のことが可能になります。

  • 高レベルのワークフローを、低レベルのタスク固有のワークフローから分離する。

  • 別のステートマシンを複数回呼び出すことによって、要素が繰り返されるのを回避する。

  • モジュール式の再利用可能なワークフローのライブラリを作成して、開発を迅速化する。

  • 複雑さを軽減し、ステートマシンの編集とトラブルシューティングを容易にする。

Step Functions は、独自の API を統合サービスとして呼び出して、これらのワークフロー実行をスタートできます。Task 状態から StartExecution API アクションを呼び出し、必要なパラメータを渡すだけです。サービス統合パターンのいずれかを使用する Step Functions API を呼び出すことができます。

ヒント

ネストされたワークフローの例を AWS アカウント にデプロイするには、「モジュール 13 - ネストされた Express ワークフロー」を参照してください。

ステートマシンの新しい実行を開始するには、次の例のような Task 状態を使用します。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input":{ "Comment":"Hello world!" }, }, "Retry":[ { "ErrorEquals":[ "StepFunctions.ExecutionLimitExceeded" ] } ], "End":true }

この Task 状態は、HelloWorld ステートマシンの新しい実行を開始し、JSON コメントを入力として渡します。

注記

StartExecution API アクションクォータでは、開始できる実行の数を制限できます。StepFunctions.ExecutionLimitExceededRetry を使用して、実行が確実に開始されるようにします。以下を参照してください。

ワークフロー実行の関連付け

開始されたワークフロー実行とそれを開始した実行を関連付けるには、コンテキストオブジェクトから実行入力に実行 ID を渡します。実行中の Task 状態から、コンテキストオブジェクトの ID にアクセスできます。パラメータ名に .$ を追加し、$$.Execution.Id を使用してコンテキストオブジェクトの ID を参照することで、実行 ID を渡します。

"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"

実行を開始するときに、AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID という特別なパラメータを使用できます。含まれている場合は、この関連付けは Step Functions コンソールの [Step details] (ステップ詳細) セクションでリンクを提供します。指定すると、ワークフローの実行を、実行の開始から、開始したワークフロー実行まで簡単にトレースできます。前の例を使用して、次のように実行 ID を HelloWorld ステートマシンの開始した実行に関連付けます。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input": { "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "End":true }

詳細については、次を参照してください。