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:PutTargets、、events:PutRuleおよび のアクセス許可が必要ですevents:DescribeRule。これらのアクセス許可がロールにない場合、Step Functions がジョブの完了を認識するまでに遅延が生じる可能性があります。EventBridge イベントの詳細については、「 AWS サービスからのイベント」を参照してください。

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

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

前のシナリオでは、ポーリングアクセス許可が欠落しているか正しくない場合があります。まれに、Step Functions へのイベントの配信または 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 でサービス統合パターンを検出する