分散マップ状態を使用するための 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:us-east-2:123456789012:stateMachine:mystateMachine です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:region:accountID:stateMachine:stateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": "arn:aws:states:region:accountID:execution:stateMachineName:*" } ] }

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

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

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

注記

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

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

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

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

例 データセットとしての Amazon S3 オブジェクトの IAM ポリシー

以下は、Amazon S3 バケットの processImages に配置した myBucket という名前のオブジェクトにアクセスするための最小特権を付与する IAM ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::myBucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } } } ] }
例 データセットとしての CSV ファイルの IAM ポリシー

以下は、ratings.csv という名前の CSV ファイルにアクセスするための最小特権を付与する IAM ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::myBucket/csvDataset/ratings.csv" ] } ] }
例 データセットとしての Amazon S3 インベントリの IAM ポリシー

以下は、Amazon S3 インベントリレポートにアクセスするための最小特権を付与する IAM ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::destination-prefix/source-bucket/config-ID/data/*" ] } ] }

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:::resultBucket/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 ユーザーまたはロールへのアクセス許可が両方とも必要です。