Step Functions が統合サービスの IAM ポリシーを生成する方法 - AWS Step Functions

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

Step Functions が統合サービスの IAM ポリシーを生成する方法

AWS Step Functions コンソールでステートマシンを作成すると、Step Functions は AWS Identity and Access Management ステートマシン定義で使用されるリソースに基づいて、次のように (IAM) ポリシーを生成します。

  • 統合を最適化するために、Step Functions はステートマシンに必要なすべてのアクセス許可とロールを持つポリシーを作成します。

    ヒント: 各サービスページの でポリシーの例を確認できます最適化サービスの統合

  • 標準統合の場合、Step Functions は部分的なアクセス許可を持つ IAM ロールを作成します。

    ステートマシンがサービスとやり取りするために必要な欠落しているロールポリシーを追加する必要があります。

動的リソースと静的リソース

静的リソースは、ステートマシンのタスク状態で直接定義されます。タスク状態に直接呼び出すリソースに関する情報を含めると、Step Functions はそれらのリソースのみの IAM ロールを作成できます。

動的リソースは、ステートマシンの起動時に入力として、または個々の状態への入力としてされ、JSONata または JSONPath を使用してアクセスされます。タスクに動的リソースを渡す場合、Step Functions はアクセス許可を自動的にスコープダウンできないため、Step Functions は以下を指定するより寛容なポリシーを作成します"Resource": "*"

.sync を使用するタスクの追加アクセス許可

ジョブの実行 (.sync) パターンを使用するタスクには、接続されたサービスの API からレスポンスをモニタリングおよび受信するための追加のアクセス許可が必要です。

Step Functions は、接続されたサービスでジョブが実行されたときのジョブのステータスをモニタリングするために、ポーリングイベントという 2 つのアプローチを使用します。

ポーリングには、 Describeまたは Get API アクションのアクセス許可が必要です。例えば、Amazon ECS の場合、ステートマシンには の許可アクセス許可が必要です。 AWS Glue ステートマシンには ecs:DescribeTasksの許可アクセス許可が必要ですglue:GetJobRun。ロールに必要なアクセス許可がない場合、Step Functions はジョブのステータスを判断できない可能性があります。ポーリング方法を使用する理由の 1 つは、一部のサービス統合が EventBridge イベントをサポートしておらず、一部のサービスがベストエフォートベースでのみイベントを送信するためです。

または、 AWS サービスから Amazon EventBridge に送信されたイベントを使用することもできます。イベントは、マネージドルールを使用して EventBridge によって Step Functions にルーティングされるため、ロールには events:PutTargetsevents:PutRule、および のアクセス許可が必要ですevents:DescribeRule。これらのアクセス許可がロールにない場合、Step Functions がジョブの完了を認識するまでに遅延が発生する可能性があります。EventBridge イベントの詳細については、「 AWS サービスのイベント」を参照してください。

スタックした .sync ワークフローのトラブルシューティング

ポーリングとイベントの両方をサポートするジョブの実行 (.sync) タスクの場合、ロールにポーリングに必要なアクセス許可がない場合でも、イベントを使用してタスクが適切に完了することがあります。

前のシナリオでは、ポーリングのアクセス許可がないか、正しくない場合があります。まれに、イベントが Step Functions に配信または処理されない場合、実行が停止する可能性があります。

ポーリングアクセス許可が正しく設定されていることを確認するには、次の方法で EventBridge イベントのない環境で実行を実行できます。

  • Step Functions へのイベントの転送を担当する EventBridge のマネージドルールを削除します。

    注記

    マネージドルールはアカウント内のすべてのステートマシンによって共有されるため、テストアカウントまたは開発アカウントを使用して、他のステートマシンへの意図しない影響を回避する必要があります。

  • 削除する特定のマネージドルールは、ターゲットサービスのポリシーテンプレートで events:PutRule に使用する Resource フィールドを検査して特定できます。マネージドルールは、そのサービス統合を使用するステートマシンを次回作成または更新するときに再度作成されます。

  • EventBridge ルールの削除に関する詳細については、「ルールの無効化と削除」を参照してください。

ワークフローをキャンセルするためのアクセス許可

[ジョブを実行] (.sync) パターンを使用するタスクが停止すると、Step Functions はベストエフォートでタスクをキャンセルしようとします。

タスクをキャンセルするにはCancel、、StopTerminate、または batch:TerminateJobや などの Delete API アクションに対するアクセス許可が必要ですeks:DeleteCluster。ロールにこれらの許可がない場合、Step Functions はタスクをキャンセルできず、タスクの実行中に追加料金が発生する可能性があります。タスク停止の詳細については、ジョブ実行を参照してください。

統合パターンの詳細

同期タスクの詳細については、「」を参照してくださいStep Functions でサービス統合パターンを検出する