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

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

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

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

異なる AWS アカウント に保存されている CSV マニフェストを設定するには、次のようにします。
  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 アクセス許可を付与します。ソースオブジェクトバケット内の GET オブジェクト、ACL、タグ、およびバージョンに対するアクセス許可を付与します。また、PUT オブジェクト、ACL、タグ、およびバージョンへのアクセス許可を送信先オブジェクトバケットに付与します。

  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 バッチオペレーションジョブの作成」を参照してください。

    コンソールを使用してジョブを作成する方法については、「S3 バッチオペレーションジョブの作成」を参照してください。