AWS Step Functions 実行を統合サービスとして管理 - AWS Step Functions

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

AWS Step Functions 実行を統合サービスとして管理

Step Functions は、サービス統合として独自の API と統合します。こうすることで、Step Functions は実行中のタスク状態から直接ステートマシンの新しい実行をスタートする許可を受けます。新しいワークフローを構築するときに、ネストされたワークフロー実行を使用して、メインワークフローの複雑さを軽減し、一般的なプロセスを再利用します。

最適化されたStep Functions の統合とStep Functions AWS SDK の統合との違い

レスポンスのリクエスト または タスクトークンのコールバックまで待機する 統合パターンの最適化はないことに注意してください。

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

サポートされている Step Functions API および構文:

以下には、別のステートマシンの実行を開始し、その完了を待機する Task 状態が含まれています。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.sync:2", "Parameters":{ "Input":{ "Comment": "Hello world!" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

以下には、別のステートマシンの実行を開始する Task 状態が含まれています。

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

以下には、コールバックサービス統合パターンを実行する Task の状態が含まれます。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken", "Parameters":{ "Input":{ "Comment": "Hello world!", "token.$": "$$.Task.Token" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

ネストされたワークフロー実行を、それを開始した親実行に関連付けるには、コンテキストオブジェクトからプルされた実行 ID を含む特別な名前のパラメータを渡します。ネストされた実行を開始するときは、AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID という名前のパラメータを使用します。パラメータ名に .$ を追加し、$$.Execution.Id を使用してコンテキストオブジェクトの ID を参照することで、実行 ID を渡します。詳細については、「コンテキストオブジェクトへのアクセス」を参照してください。

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

ネストされたステートマシンは、以下を返します。

リソース 出力
startExecution.sync 文字列
startExecution.sync:2 JSON

どちらもネストされたステートマシンが完了するのを待機しますが、異なる Output 形式を返します。例えば、オブジェクト { "MyKey": "MyValue" } を返す Lambda 関数を作成すると、次のレスポンスが得られます。

startExecution.sync の場合:

{ <other fields> "Output": "{ \"MyKey\": \"MyValue\" }" }

startExecution.sync:2 の場合:

{ <other fields> "Output": { "MyKey": "MyValue" } }

ネストされたステートマシンの IAM アクセス許可の設定

親ステートマシンは、ポーリングとイベントを使用して子ステートマシンが実行を完了したかどうかを判断します。states:DescribeExecutionポーリングには権限が必要ですが、Step Functions EventBridge に送信されるイベントにはevents:PutTargetsevents:PutRuleevents:DescribeRuleの権限が必要です。IAM ロールにこれらのアクセス許可がない場合、親ステートマシンが子ステートマシンの実行完了を認識するまで、遅延が発生する可能性があります。

1 つのネストされたワークフロー実行のために StartExecution を呼び出すステートマシンの場合は、そのステートマシンへの許可を制限する IIAM ポリシーを使用します。

詳細については、「IAM permissions for Step Functions」を参照してください。