バッチオペレーションに対するアクセス許可の付与
S3 バッチ操作ジョブを作成して実行する前に、必要な許可を付与する必要があります。Amazon S3 バッチ操作ジョブを作成するには、s3:CreateJob
ユーザー許可が必要です。ジョブを作成する同じエンティティには、ジョブに対して指定された AWS Identity and Access Management (IAM) ロールをバッチオペレーションに渡すための iam:PassRole
許可も必要です。
IAM リソースの指定に関する一般的な情報については、IAM ユーザーガイドの IAM JSON ポリシー、リソース要素を参照してください。以下のセクションでは、IAM ロールの作成とポリシーのアタッチについて説明します。
S3 バッチ操作の IAM ロールの作成
Amazon S3 には、ユーザーに代わって S3 バッチ操作を実行するための許可が必要です。AWS Identity and Access Management (IAM) ロールを介してこれらのアクセス許可を付与します。このセクションでは、IAM ロールを作成するときに使用する信頼ポリシーとアクセス許可ポリシーの例を示します。詳細については、IAM ユーザーガイドの IAM ロールを参照してください。例については、ジョブタグを使用したバッチオペレーションのアクセス許可の制御 および S3 バッチ操作を使用したオブジェクトのコピー を参照してください。
IAM ポリシーでは、条件キーを使用して、S3 バッチ操作ジョブのアクセス許可をフィルタリングすることもできます。Amazon S3 固有の条件キーの詳細な情報と完全なリストについては、「サービス認可リファレンス」の「Actions, resources, and condition keys for Amazon S3」を参照してください。
S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。
次の動画には、AWS Management Console を使用してバッチオペレーションジョブの IAM アクセス許可を設定する方法が含まれています。
信頼ポリシー
S3 バッチ操作のサービスプリンシパルが IAM ロールを引き受けることを許可するには、ロールに次の信頼ポリシーをアタッチします。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
許可ポリシーのアタッチ
オペレーションのタイプに応じて、以下のいずれかのポリシーをアタッチできます。
アクセス権限を設定する前に、以下の点にご留意ください。
-
オペレーションに関係なく、Amazon S3 には S3 バケットからマニフェストオブジェクトを読み込み、またオプションでバケットにレポートを書き込むアクセス許可が必要です。そのため、次のポリシーにはすべて、これらのアクセス許可が含まれます。
-
Amazon S3 インベントリレポートマニフェストの場合、S3 バッチ操作では manifest.json オブジェクトおよび関連するすべての CSV データファイルを読み込むためのアクセス許可が必要です。
-
オブジェクトのバージョン ID を指定している場合にのみ、
s3:GetObjectVersion
などのバージョン固有のアクセス許可が必要です。 -
暗号化されたオブジェクトに対して S3 バッチ操作を実行している場合、IAM ロールには、暗号化に使用される AWS KMS キーへのアクセス許可も必要です。
-
インベントリレポートマニフェストを AWS KMS で暗号化して送信する場合、IAM ポリシーでは manifest.json オブジェクトおよび関連するすべての CSV データファイルに対するアクセス許可の
"kms:Decrypt"
と"kms:GenerateDataKey"
が必要です。 バッチオペレーションジョブにより、アクセスコントロールリスト (ACL) が有効で、別の AWS アカウントのバケットにマニフェストを生成する場合は、そのバッチジョブ用に設定された IAM ロールの IAM ポリシーで
s3:PutObjectAcl
権限を付与する必要があります。この権限を含めない場合、バッチジョブはError occurred when preparing manifest: Failed to write manifest
エラーで失敗します。
オブジェクトのコピー: PutObject
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket
", "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
オブジェクトのタグ付けの置き換え: PutObjectTagging
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
オブジェクトタグの削除: DeleteObjectTagging
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
アクセスコントロールリストの置き換え: PutObjectAcl
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
オブジェクトの復元: RestoreObject
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:RestoreObject" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
Object Lock 保持の適用: PutObjectRetention
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
" ] }, { "Effect": "Allow", "Action": [ "s3:PutObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
Object Lock のリーガルホールド: PutObjectLegalHold
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
" ] }, { "Effect": "Allow", "Action": "s3:PutObjectLegalHold", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }
既存のオブジェクトのレプリケート: S3 で生成されたマニフェストによる InitiateReplication
S3 で生成されたマニフェストを使用して保存する場合にはこのポリシーを使用します。バッチオペレーションを使用して既存のオブジェクトをレプリケートする方法の詳細は、「バッチレプリケーションを使用した既存のオブジェクトのレプリケーション」を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*" ] }, { "Action":[ "s3:GetReplicationConfiguration", "s3:PutInventoryConfiguration" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket
" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*", "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] } ] }
既存のオブジェクトのレプリケート: ユーザーマニフェストによる InitiateReplication
ユーザー指定のマニフェストを使用する場合にはこののポリシーを使用します。バッチオペレーションを使用して既存のオブジェクトをレプリケートする方法の詳細は、「バッチレプリケーションを使用した既存のオブジェクトのレプリケーション」を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
/*" ] } ] }