分散マップ状態を使用するための IAM ポリシー - AWS Step Functions

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

分散マップ状態を使用するための IAM ポリシー

Step Functions コンソールでワークフローを作成すると、Step Functions はワークフロー定義内のリソースに基づいて IAM ポリシーを自動的に生成できます。生成されたポリシーには、ステートマシンロールが分散マップ状態の StartExecution API アクションを呼び出し、Amazon S3 バケットやオブジェクト、Lambda 関数などの AWS リソースにアクセスするために必要な最小限の権限が含まれます。

IAM ポリシーに必要な許可のみを含めることをお勧めします。たとえば、ワークフローに分散モードMapの状態が含まれている場合は、データを含む特定の Amazon S3 バケットとフォルダにポリシーの範囲を絞り込みます。

重要

分散マップ状態の入力で、既存のキーと値のペアへの参照パスとともに、Amazon S3 バケットやオブジェクト、またはプレフィックスを指定する場合は、ワークフローの IAM ポリシーを必ず更新してください。ポリシーの範囲は、ランタイムでパスから解釈されるバケット名とオブジェクト名に限定します。

分散マップ状態を実行するための IAM ポリシーの例

ワークフローに分散マップ状態を含める場合、Step Functions には、ステートマシンのロールで分散マップ状態StartExecution API アクションを呼び出すための適切な許可が必要です。

次の IAM ポリシー例では、ステートマシンのロールで分散マップ状態を実行するために必要な最小特権を付与しています。

注記

必ず stateMachineName を、分散マップ状態を使用しているステートマシン名に置き換えてください。例えば、arn:aws:states:region:account-id:stateMachine:mystateMachine

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution" ], "Resource": "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*" } ] }

分散マップの IAM redriving ポリシーの例

失敗した子ワークフローは、親ワークフローのマップ実行で redriving できます。redriven された親ワークフローは、分散マップを含むすべての失敗状態を redrives します。実行ロールには、親ワークフローで RedriveExecution API アクションを呼び出すために必要な最小特権があることを確認してください。

次の IAM ポリシー例では、ステートマシンのロールで分散マップ状態を redriving (再処理) するために必要な最小特権を付与しています。

注記

必ず stateMachineName を、分散マップ状態を使用しているステートマシン名に置き換えてください。例えば、arn:aws:states:region:account-id:stateMachine:mystateMachine

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachineName/myMapRunLabel:*" } ] }

Amazon S3 データセットからデータを読み取る IAM ポリシーの例

次の例は、ListObjectsV2 および GetObject API アクションを使用して Amazon S3 データセットにアクセスするために必要な最小限の権限を付与する手法を示しています。

例 Amazon S3 オブジェクトをデータセットとして使用する条件

次の条件は、Amazon S3 バケットのprocessImagesフォルダ内のオブジェクトにアクセスする最小権限を付与します。

"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
例 CSV ファイルをデータセットとして使用する

次の例は、 という名前の CSV ファイルにアクセスするために必要なアクションを示していますratings.csv

"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
例 Amazon S3 インベントリをデータセットとして使用する

Amazon S3 インベントリマニフェストとデータファイルのリソースの例を次に示します。

"Resource": [ "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*" ]
例 ListObjectsV2 を使用してフォルダプレフィックスに制限する

ListObjectsV2 を使用する場合、2 つのポリシーが生成されます。1 つはバケットの内容の一覧表示を許可するために必要であり (ListBucket)、もう 1 つのポリシーはバケット内のオブジェクトの取得を許可します ()GetObject

アクション、リソース、および条件の例を次に示します。

"Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "/path/to/your/json/" ] } }
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]

はスコープに含まれGetObjectず、オブジェクトにはワイルドカード (*) を使用することに注意してください。

Amazon S3 バケットにデータを書き込むための IAM ポリシーの例

次の IAM ポリシーの例では PutObject API アクションを使用して、Amazon S3 バケット内にある csvJobs という名前のフォルダに、子ワークフローの実行結果を書き込むために必要な最小特権を付与しています。

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*" ] } ] }

AWS KMS key 暗号化された Amazon S3 バケットの IAM アクセス許可

分散マップ状態では、マルチパートアップロードを使用して Amazon S3 バケットに子ワークフローの実行結果を書き込みます。バケットが AWS Key Management Service (AWS KMS) キーを使用して暗号化されている場合は、キーに対して kms:Decryptkms:Encryptkms:GenerateDataKey アクションを実行する許可も、IAM ポリシーに含める必要があります。マルチパートアップロードを完了する前に、暗号化されたファイル部分からデータを復号して読み取る必要があるため、Amazon S3 にはこれらの許可が必要です。

次の IAM ポリシーの例では、Amazon S3 バケットの暗号化に使用されるキーに対する kms:Decryptkms:Encrypt、および kms:GenerateDataKey アクションに許可を付与します。

{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" ] } }

詳細については、AWS ナレッジセンターの「AWS KMS keyで暗号化した大容量ファイルを Amazon S3 にアップロードする」を参照してください。

IAM ユーザーまたはロールが AWS アカウント と同じ にある場合はKMS key、キーポリシーに対するこれらのアクセス許可が必要です。IAM ユーザーまたはロールが KMS key とは異なるアカウントに属している場合、キーポリシーへのアクセス許可と、 IAM ユーザーまたはロールへのアクセス許可が両方とも必要です。