CSV マニフェストを使用して AWS アカウント 間でオブジェクトをコピーする - Amazon Simple Storage Service

CSV マニフェストを使用して AWS アカウント 間でオブジェクトをコピーする

ソースアカウントに保存された CSV マニフェストを使用して、S3 バッチオペレーションによって AWS アカウント間でオブジェクトをコピーできます。S3 インベントリレポートをマニフェストとして使用するには、「送信先アカウントに配信されたインベントリレポートを使用して AWS アカウント 間でオブジェクトをコピーする」を参照してください。

CSV 形式のマニフェストファイルの例については、「マニフェストファイルの作成」を参照してください。

次の手順は、S3 バッチオペレーションジョブを使用して、ソースアカウントに保存されている CSV マニフェストファイルによってソースアカウントから送信先アカウントにオブジェクトをコピーするときに、アクセス許可を設定する方法を示しています。

CSV マニフェストを使用して AWS アカウント間でオブジェクトをコピーするには
  1. S3 バッチ操作信頼ポリシーに基づいて、送信先アカウントにロールを作成します。この手順では、送信先アカウントは、オブジェクトのコピー先のアカウントです。

    信頼ポリシーの詳細については、「信頼ポリシー」を参照してください。

    ロールの作成について詳しくは、IAM ユーザーガイドAWS のサービスに許可を委任するロールの作成を参照してください。

    コンソールを使用してロールを作成する場合は、ロールの名前を入力します (サンプルロールでは BatchOperationsDestinationRoleCOPY という名前が使用されています)。[S3] サービスを選択してから、信頼ポリシーをロールに適用する [S3 バケットバッチ操作] ユースケースを選択します。

    次に [ポリシーの作成] を選択して、ロールに次のポリシーをアタッチします。

    { "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:::ObjectDestinationBucket/*", "arn:aws:s3:::ObjectSourceBucket/*", "arn:aws:s3:::ObjectSourceManifestBucket/*" ] } ] }

    このポリシーを使用して、ロールはソースマニフェストバケットのマニフェストを読み取るための batchoperations.s3.amazonaws.com アクセス許可を付与します。ソースオブジェクトバケット内のオブジェクト、アクセスコントロールリスト (ACL)、タグ、およびバージョンを GET するアクセス許可を付与し、また、送信先のオブジェクトバケットへオブジェクト、ACL、タグ、およびバージョンを PUT するアクセス許可も付与します。

  2. 前のステップで作成したロールにソースマニフェストバケット内のオブジェクトとバージョンを GET するアクセス許可を付与するために、ソースアカウントで、マニフェストが含まれるバケットに適用するバケットポリシーを作成します。

    このステップにより、信頼できるロールを使用して、S3 バッチオペレーションでマニフェストを読み取ることができます。マニフェストを含むバケットにバケットポリシーを適用します。

    以下は、ソースマニフェストバケットに適用するバケットポリシーの例です。

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

    このポリシーでは、送信先アカウントでジョブを作成しているコンソールユーザーに、同じバケットポリシーを介してソースマニフェストバケットでも同じアクセス許可を許可する権限も付与されます。

  3. 前の手順で作成したロールにソースオブジェクトバケット内のオブジェクト、ACL、タグ、およびバージョンを GET するアクセス許可を付与するために、ソースアカウントで、ソースバケットに適用するバケットポリシーを作成します。S3 バッチ操作は、信頼できるロールを使用して送信元バケットからオブジェクトを取得できます。

    以下は、ソースオブジェクトを含むバケットのバケットポリシーの例です。

    { "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:::ObjectSourceBucket/*" } ] }
  4. 送信先アカウントで S3 バッチ操作ジョブを作成します。送信先アカウントで作成したロールの Amazon リソースネーム (ARN) が必要です。ジョブの作成の詳細については、「S3 バッチオペレーションジョブの作成」を参照してください。