送信先アカウントに配信されたインベントリレポートを使用して AWS アカウント 間でオブジェクトをコピーする - Amazon Simple Storage Service

送信先アカウントに配信されたインベントリレポートを使用して AWS アカウント 間でオブジェクトをコピーする

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

Amazon S3 インベントリは、バケット内のオブジェクトのインベントリを生成します。結果のリストは出力ファイルに公開されます。インベントリ対象となるバケットはソースバケットと呼ばれ、インベントリレポートファイルが保存されているバケットは送信先バケットと呼ばれます。

Amazon S3 インベントリレポートは、別の AWS アカウント に配信されるように設定できます。これにより、送信先アカウントでジョブが作成されたときに S3 バッチ操作がインベントリレポートを読み取ることができます。

Amazon S3 インベントリのコピー元およびコピー先バケットの詳細については、「ソースバケットと保存先バケット」を参照してください。

インベントリを設定する最も簡単な方法は、AWS Management Console を使用することですが、REST API、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用することもできます。

以下のコンソールの手順には、S3 バッチ操作ジョブに対するアクセス許可を設定するための大まかなステップが含まれています。この手順では、オブジェクトを送信元アカウントから送信先アカウントにコピーし、インベントリレポートを送信先アカウントに保存します。

さまざまなアカウントが所有する送信元および送信先バケットの Amazon S3 インベントリを設定する方法
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3) を開きます。

  2. インベントリレポートを保存する送信先バケットを選択します。

    インベントリレポートを格納するための送信先マニフェストバケットを決定します。この手順では、送信先アカウントは、送信先マニフェストバケットとオブジェクトのコピー先バケットの両方を所有するアカウントです。

  3. ソースバケットのオブジェクトを一覧表示するようにインベントリを設定し、そのリストを送信先マニフェストバケットに発行します。

    ソースバケットのインベントリリストを設定します。これを行うときは、リストを保存する送信先バケットを指定します。ソースバケットのインベントリレポートが送信先バケットに発行されます。この手順では、ソースアカウントは、ソースバケットを所有するアカウントです。

    コンソールを使用してインベントリリストを設定する方法またはインベントリリストファイルを暗号化する方法については、「Amazon S3 インベントリの設定」を参照してください。

    出力形式として [CSV] を選択してください。

    送信先バケットの情報を入力したら、[Buckets in another account (別のアカウントのバケット)] を選択します。次に、送信先マニフェストバケットの名前を入力します。必要に応じて、送信先アカウントのアカウント ID を入力できます。

    インベントリ設定が保存されると、コンソールに次のようなメッセージが表示されます。

    Amazon S3 は送信先バケットにバケットポリシーを作成できませんでした。Amazon S3 が送信先バケットに対してデータの保存ができるよう、送信先バケット所有者に次のバケットポリシーの追加を依頼してください。

    コンソールには、送信先バケットに使用できるバケットポリシーが表示されます。

  4. コンソールに表示される送信先バケットポリシーをコピーします。

  5. 送信先アカウントで、インベントリレポートが格納されている送信先マニフェストバケットにコピーしたバケットポリシーを追加します。

  6. 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:::ObjectDestinationManifestBucket/*" ] } ] }

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

  7. ソースアカウントで、前の手順で作成したロールにソースバケット内のオブジェクト、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/*" } ] }
  8. インベントリレポートが使用可能になったら、送信先アカウントで S3 バッチ操作 PUT オブジェクトコピージョブを作成し、送信先マニフェストバケットから在庫レポートを選択します。送信先アカウントで作成したロールの ARN が必要です。

    ジョブの作成に関する全般情報については、「S3 バッチオペレーションジョブの作成」を参照してください。

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