Amazon S3 バッチオペレーションに対するアクセス許可の付与 - Amazon Simple Storage Service

Amazon S3 バッチオペレーションに対するアクセス許可の付与

このセクションでは、S3 バッチオペレーションジョブの作成と実行に必要なアクセス許可を付与する方法について説明します。

S3 バッチオペレーションジョブを作成するために必要なアクセス許可

Amazon S3 バッチオペレーションジョブを作成するには、s3:CreateJob アクセス許可が必要です。ジョブを作成する同じエンティティには、ジョブに対して指定された AWS Identity and Access Management (IAM) ロールを Amazon S3 バッチオペレーションに渡すための iam:PassRole アクセス許可も必要です。この IAM ロールの作成については、次のトピック「S3 バッチオペレーションの IAM ロールの作成」を参照してください。

S3 バッチオペレーションの IAM ロールの作成

トピック

Amazon S3 には、ユーザーに代わって S3 バッチオペレーションを実行するためのアクセス許可が必要です。AWS Identity and Access Management (IAM) ロールを使用して、これらのアクセス許可を付与します。このセクションでは、IAM ロールを作成するときに使用する信頼ポリシーとアクセス許可ポリシーの例を示します。詳細については、「IAM ロール」を参照してください。例については、「ジョブタグを使用した S3 バッチオペレーションのアクセス許可の制御」および「S3 バッチオペレーションを使用して AWS アカウント間でオブジェクトをコピーする」を参照してください。

IAM ポリシーでは、条件キーを使用して、S3 バッチオペレーションジョブのアクセス許可をフィルタリングすることもできます。Amazon S3 特定の条件キーの詳細と完全なリストについては、「Amazon S3 のアクション、リソース、条件キー」を参照してください。

次の動画は、AWS マネジメントコンソールを使用してバッチオペレーションジョブの 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 キーへのアクセス許可も必要です。

オブジェクトをコピー: PutObject

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::{{DestinationBucket}}/*" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::{{SourceBucket}}", "arn:aws:s3:::{{SourceBucket}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }

オブジェクトタグを置換: PutObjectTagging

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::{{TargetResource}}/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }

オブジェクトタグを削除: DeleteObjectTagging

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::{{TargetResource}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }

アクセスコントロールリストを置換: PutObjectAcl

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::{{TargetResource}}/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }

オブジェクトを復元: RestoreObject

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:RestoreObject" ], "Resource": "arn:aws:s3:::{{TargetResource}}/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }

オブジェクトロックの保持を適用: PutObjectRetention

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::{{TargetResource}}" ] }, { "Effect": "Allow", "Action": [ "s3:PutObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": [ "arn:aws:s3:::{{TargetResource}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::{{TargetResource}}" ] }, { "Effect": "Allow", "Action": "s3:PutObjectLegalHold", "Resource": [ "arn:aws:s3:::{{TargetResource}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }