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 はアクセス許可を自動的に絞り込むことができないため、"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:PutRuleevents:DescribeRule のアクセス許可が必要です。これらのアクセス許可がロールにない場合、Step Functions がジョブの完了を認識するまでに遅延が発生する可能性があります。EventBridge イベントの詳細については、「 AWSサービスのイベント」を参照してください。

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

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

このような場合、ポーリングのアクセス許可が不足していることや正しくないことに気付かない可能性があります。イベントが Step Functions に届かないまたは処理されないまれなケースでは、実行がスタックする可能性があります。

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

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

    注記

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

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

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

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

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

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

統合パターンの詳細

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