CSV マニフェストを使用して AWS アカウント 間でオブジェクトをコピーする
Amazon S3 バッチオペレーションを使用すると、Amazon S3 のオブジェクトに対して大規模なバッチオペレーションを実行できます。S3 バッチオペレーションを使用して Copy (CopyObject
) ジョブを作成し、同じアカウント内または別の送信先アカウントにオブジェクトをコピーできます。
ソースアカウントに保存された CSV マニフェストを使用して、S3 バッチオペレーションによって AWS アカウント間でオブジェクトをコピーできます。S3 インベントリレポートをマニフェストとして使用するには、「インベントリレポートを使用して AWS アカウント 間でオブジェクトをコピーする」を参照してください。
CSV 形式のマニフェストファイルの例については、「マニフェストファイルの作成」を参照してください。
次の手順は、S3 バッチオペレーションジョブを使用して、ソースアカウントに保存されている CSV マニフェストファイルによってソースアカウントから送信先アカウントにオブジェクトをコピーするときに、アクセス許可を設定する方法を示しています。
CSV マニフェストを使用して AWS アカウント間でオブジェクトをコピーするには
-
S3 バッチオペレーション信頼ポリシーに基づいて、送信先アカウントに AWS Identity and Access Management (IAM) ロールを作成します。この手順では、送信先アカウントは、オブジェクトのコピー先のアカウントです。
信頼ポリシーの詳細については、「信頼ポリシー」を参照してください。
ロールの作成について詳しくは、「IAM ユーザーガイド」の「AWS のサービスにアクセス許可を委任するロールを作成する」を参照してください。
コンソールを使用してロールを作成する場合は、ロールの名前を入力します (以下のサンプルロールでは
という名前が使用されています)。[S3] サービスを選択してから、信頼ポリシーをロールに適用する [S3 バッチオペレーション] ユースケースを選択します。BatchOperationsDestinationRoleCOPY
次に [ポリシーの作成]を選択して、ロールに次のポリシーをアタッチします。このポリシーを使用するには、
をユーザー自身の情報に置き換えます。user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowBatchOperationsDestinationObjectCOPY
", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectVersionAcl", "s3:PutObjectAcl", "s3:PutObjectVersionTagging", "s3:PutObjectTagging", "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*", "arn:aws:s3:::amzn-s3-demo-source-bucket
/*", "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] } ] }このポリシーを使用して、ロールはソースマニフェストバケットのマニフェストを読み取るための
batchoperations.s3.amazonaws.com
アクセス許可を付与します。ソースオブジェクトバケット内のオブジェクト、アクセスコントロールリスト (ACL)、タグ、およびバージョンをGET
するアクセス許可を付与し、また、送信先のオブジェクトバケットへオブジェクト、ACL、タグ、およびバージョンをPUT
するアクセス許可も付与します。 -
前のステップで作成したロールにソースマニフェストバケット内のオブジェクトとバージョンを
GET
するアクセス許可を付与するために、ソースアカウントで、マニフェストが含まれるバケットに適用するバケットポリシーを作成します。このステップにより、信頼できるロールを使用して、S3 バッチオペレーションでマニフェストを読み取ることができます。マニフェストを含むバケットにバケットポリシーを適用します。
以下は、ソースマニフェストバケットに適用するバケットポリシーの例です。このポリシーを使用するには、
をユーザー自身の情報に置き換えます。user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowBatchOperationsSourceManfiestRead", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
DestinationAccountNumber
:user/ConsoleUserCreatingJob
", "arn:aws:iam::DestinationAccountNumber
:role/BatchOperationsDestinationRoleCOPY
" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" } ] }このポリシーでは、送信先アカウントでジョブを作成しているコンソールユーザーに、同じバケットポリシーを介してソースマニフェストバケットでも同じアクセス許可を許可する権限も付与されます。
-
前の手順で作成したロールにソースオブジェクトバケット内のオブジェクト、ACL、タグ、およびバージョンを
GET
するアクセス許可を付与するために、ソースアカウントで、ソースバケットに適用するバケットポリシーを作成します。S3 バッチ操作は、信頼できるロールを使用して送信元バケットからオブジェクトを取得できます。以下は、ソースオブジェクトを含むバケットのバケットポリシーの例です。このポリシーを使用するには、
をユーザー自身の情報に置き換えます。user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowBatchOperationsSourceObjectCOPY", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
DestinationAccountNumber
:role/BatchOperationsDestinationRoleCOPY
" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" } ] } -
送信先アカウントで S3 バッチ操作ジョブを作成します。送信先アカウントで作成したロールの Amazon リソースネーム (ARN) が必要です。ジョブの作成の詳細については、「S3 バッチオペレーションジョブの作成」を参照してください。