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

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

S3 バッチ操作ジョブを作成して実行する前に、必要な許可を付与する必要があります。Amazon S3 バッチ操作ジョブを作成するには、s3:CreateJob ユーザー許可が必要です。ジョブを作成する同じエンティティには、ジョブに対して指定された AWS Identity and Access Management (IAM) ロールをバッチオペレーションに渡すための iam:PassRole 許可も必要です。

以下のセクションでは、IAM ロールの作成とポリシーのアタッチについて説明します。IAM リソースの指定に関する一般的な情報については、「IAM ユーザーガイド」の「IAM JSON ポリシーエレメント: リソース」を参照してください。

S3 バッチ操作の IAM ロールの作成

Amazon S3 には、ユーザーに代わって S3 バッチ操作を実行するための許可が必要です。AWS Identity and Access Management (IAM) ロールを介してこれらのアクセス許可を付与します。S3 バッチオペレーションジョブを作成するときは、ジョブで使用する IAM ロールを指定します。これは既存の IAM ロールにすることができます。または、Amazon S3 コンソールを使用してジョブを作成する場合は、Amazon S3 が作成する IAM ロールにすることができます。

Amazon S3 に IAM ロールを作成させることを選択した場合、信頼ポリシーとアクセス許可ポリシーが自動的に作成され、ロールにアタッチされます。信頼ポリシーは、S3 バッチ操作のサービスプリンシパル (batchoperations.s3.amazonaws.com) がロールを引き受けることを許可します。アクセス許可ポリシーは、ジョブに指定した設定に基づいて、ジョブを実行するために必要なすべてのアクションを許可します。例えば、AWS アカウント内の 1 つのバケットから別のバケットにオブジェクトをコピーするようにジョブを設定する場合、アクセス許可ポリシーは s3:GetObjects3:PutObject などのアクションを許可します。ジョブを送信する前に、ロールの信頼ポリシーとアクセス許可ポリシーを確認できます。このオプションは、Amazon S3 コンソールを使用してジョブを作成し、フィルターを使用するか、レプリケーション設定に基づく S3 生成オブジェクトリストを使用するようにジョブを設定する場合にのみ使用できます。ジョブを送信すると、IAM ロールはアカウントに保持されます。その後、同じオペレーションを実行する後続のジョブに再度使用したり、ジョブの実行が終了したときに削除したりできます。

IAM ロールを手動で作成する場合は、このセクションのポリシー例がロールの作成に役立ちます。ロールの作成と設定の詳細については、「IAM ユーザーガイド」の「IAM ロール」を参照してください。S3 リソースタイプ別の S3 API オペレーションのアクセス許可の詳細については、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。その他の例については、「ジョブタグを使用したバッチオペレーションのアクセス許可の制御」および「S3 バッチ操作を使用したオブジェクトのコピー」を参照してください。

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

次の動画には、AWS マネジメントコンソールを使用してバッチオペレーションジョブの IAM アクセス許可を設定する方法が含まれています。

信頼ポリシー

S3 バッチ操作のサービスプリンシパルが IAM ロールを引き受けることを許可するには、ロールに次の信頼ポリシーをアタッチします。

JSON
{ "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

JSON
{ "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

JSON
{ "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

JSON
{ "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

JSON
{ "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

JSON
{ "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

JSON
{ "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/*" ] } ] }
JSON
{ "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 で生成されたマニフェストを使用して保存する場合にはこのポリシーを使用します。バッチオペレーションを使用して既存のオブジェクトをレプリケートする方法の詳細は、「バッチレプリケーションを使用した既存のオブジェクトのレプリケーション」を参照してください。

JSON
{ "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

ユーザー指定のマニフェストを使用する場合にはこののポリシーを使用します。バッチオペレーションを使用して既存のオブジェクトをレプリケートする方法の詳細は、「バッチレプリケーションを使用した既存のオブジェクトのレプリケーション」を参照してください。

JSON
{ "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/*" ] } ] }

チェックサムを計算: GetObjectGetObjectVersionRestoreObject、および PutObject を許可する

S3 バッチオペレーションで [チェックサムを計算] オペレーションを使用しようとする場合は、このポリシーを使用します。GetObjectGetObjectVersion、および RestoreObject のアクセス許可は、保存されたデータのバイトを取得して読み取るために必要です。ユーザー入力プレースホルダーを独自の情報に置き換えます。[チェックサムを計算] の詳細については、「Amazon S3 で保管中のデータのオブジェクトの整合性を確認する」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:RestoreObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket3/*" ] } ] }