翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Step Functions 実行を統合サービスとして管理
Step Functions は、サービス統合として独自の API と統合します。こうすることで、Step Functions は実行中のタスク状態から直接ステートマシンの新しい実行をスタートする許可を受けます。新しいワークフローを構築するときに、ネストされたワークフロー実行を使用して、メインワークフローの複雑さを軽減し、一般的なプロセスを再利用します。
最適化されたStep Functions の統合とStep Functions AWS SDK の統合との違い
ジョブの実行 (.sync) 統合パターンが利用可能です。
レスポンスのリクエスト または タスクトークンのコールバックまで待機する 統合パターンの最適化はないことに注意してください。
詳細については、以下を参照してください。
サポートされている 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:PutTargets
、events:PutRule
、events:DescribeRule
の権限が必要です。IAM ロールにこれらのアクセス許可がない場合、親ステートマシンが子ステートマシンの実行完了を認識するまで、遅延が発生する可能性があります。
1 つのネストされたワークフロー実行のために StartExecution
を呼び出すステートマシンの場合は、そのステートマシンへの許可を制限する IIAM ポリシーを使用します。
詳細については、「IAM permissions for Step Functions」を参照してください。