統合サービスの IAM ポリシー - AWS Step Functions

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

統合サービスの IAM ポリシー

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

  • ステートマシンが Optimized 統合の 1 つを使用している場合、ステートマシンに必要な許可とロールを持つポリシーが作成されます。

  • ステートマシンが AWS SDK 統合の 1 つを使用する場合、部分的な許可を持つ IAM ロールが作成されます。その後、IAM コンソールを使用して、欠落しているロールポリシーを追加できます。

以下の例では、ステートマシンの定義に基づき、Step Functions でポリシーが生成される様子を示します。サンプルコードの項目 (例: [[resourceName]]) は、ステートマシンの定義に表示されている静的リソースに置き換えられています。複数の静的リソースがある場合は、IAM ロールの各エントリが存在します。

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

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

動的リソースは、状態入力に渡され、パスを使用してアクセスされるリソースです (パス 参照)。動的リソースをタスクに渡す場合、Step Functions は "Resource": "*" を指定する権限の高いポリシーを作成します。

[Run a Job] (ジョブ実行) パターンを使用したタスクの追加許可

[Run a Job] (ジョブ実行) パターン (.sync で終了するもの) を使用するタスクについては、接続されたサービスの API アクションからのレスポンスのモニタリングおよび受信には、追加許可が必要です。関連するポリシーには、[Request Response] (レスポンスの要求) または [Wait for Callback] (コールバックを待機) パターンを使用するタスクよりも多くの許可が含まれます。同期タスクに関する情報は、サービス統合パターン を参照してください。

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

ポーリングには、Describe または Get API アクション に対する許可 (ecs:DescribeTasks または glue:GetJobRun など) が必要です。これらの許可がロールに欠落している場合、Step Functions はジョブのステータスを判断できない場合があります。これは、一部の [Run a Job] (ジョブの実行) (.sync) サービス統合が EventBridge イベントをサポートしないためであり、一部のサービスはベストエフォートベースでしか、イベントを送信しません。

から送信されたイベントAWSアマゾンへのサービス EventBridge 管理ルールを使用して Step Functions に指示され、次の権限が必要ですevents:PutTargets,events:PutRule, およびevents:DescribeRule。これらの許可がロールに欠落している場合、Step Functions がジョブの完了を認識するまで遅延が発生する可能性があります。の詳細 EventBridge イベント、「」を参照してください。からのイベントAWSサービス

注記

ポーリングとイベントの両方をサポートする[Run a Job] (ジョブの実行) (.sync) タスクの場合、イベントを使用してタスクが正常に完了する場合があります。これは、ロールにポーリングに必要な許可がない場合でも発生します。この場合、ポーリング許可が正しくない、または欠落していることにすぐに気付かないことがあります。まれなインスタンスでは、イベントが Step Functions に配信されない場合や、Step Functions によって処理されない場合、実行がスタックする可能性があります。ポーリング許可が正しく設定されていることを確認するには、環境で実行を実行せずに実行できます。 EventBridge イベントは次の方法で実行できます。

  • イベントを Step Functions に転送する役割を負う EventBridge からマネージドルールを削除します。このマネージドルールはアカウント内のすべてのステートマシンで共有されるため、他のステートマシンに思いがけない影響がでないようにするため、このアクションを実行するのはテストアカウントまたは開発アカウントだけにしてください。削除する特定のマネージドルールは、ターゲットサービスのポリシーテンプレートで events:PutRule に使用する Resource フィールドを検査して特定できます。マネージドルールは、そのサービス統合を使用するステートマシンを次回作成または更新するときに再度作成されます。削除の詳細を参照 EventBridge ルール、「」を参照してくださいルールの無効化または削除

  • Step Functions Local でテストします。これは、[Run a Job] (ジョブの実行) (.sync) タスクを完了するために行われるイベントの使用をサポートしていません。Step Functions Local を使用するには、ステートマシンで使用する IAM ロールを引き受けます。[Trust Relationship] (信頼関係) を編集する必要があるかもしれません。AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、および AWS_SESSION_TOKEN 環境変数を仮定されたロールの値に設定し、java -jar StepFunctionsLocal.jar を使用する Step Functions Local を起動します。最後に、AWS CLI と --endpoint-url パラメータを使用して、ステートマシンを作成し、実行をスタートし、実行履歴を取得します。詳細については、「Step Functions テストステートマシンをローカルでテストする」を参照してください。

[Run a Job] (ジョブの実行) (.sync) パターンを使用するタスクが停止すると、Step Functions はベストエフォートでタスクをキャンセルしようとします。これには、次の許可が必要です。CancelStopTerminate、または Delete API アクション (batch:TerminateJob または eks:DeleteCluster など) が必要です。ロールにこれらの許可がない場合、Step Functions はタスクをキャンセルできず、タスクの実行中に追加料金が発生する可能性があります。タスク停止の詳細については、ジョブ実行を参照してください。

IAM ロールの作成に使用されるポリシーテンプレート

次のトピックでは、Step Functions で自分達用に新しいロールの作成を選択する場合に使用するポリシーテンプレートなどについて説明します。

注記

これらのテンプレートは、 他の AWS のサービスと連携するときに、Step Functions が IAM ポリシーを作成する方法と手動で Step Functions 用 IAM ポリシーを作成する方法を理解するため、これらのテンプレートをレビューしてください。Step Functions サービス統合の詳細については、他のサービスで AWS Step Functions を使用する を参照してください。