インベントリレポートを使用して AWS アカウント 間でオブジェクトをコピーする
Amazon S3 バッチオペレーションを使用すると、Amazon S3 のオブジェクトに対して大規模なバッチオペレーションを実行できます。S3 バッチオペレーションを使用して Copy (CopyObject
) コピージョブを作成し、同じアカウント内または別の送信先アカウントにオブジェクトをコピーできます。
Amazon S3 インベントリを使用してインベントリレポートを作成し、そのレポートを使用して、S3 バッチオペレーションでコピーするオブジェクトのリスト (マニフェスト) を作成できます。ソースアカウントまたは送信先アカウントでの CSV マニフェストの使用について詳しくは、CSV マニフェストを使用して AWS アカウント 間でオブジェクトをコピーする を参照してください。
Amazon S3 インベントリは、バケット内のオブジェクトのインベントリを生成します。結果のリストは出力ファイルに公開されます。インベントリ対象となるバケットはソースバケットと呼ばれ、インベントリレポートファイルが保存されているバケットは送信先バケットと呼ばれます。
Amazon S3 インベントリレポートは、別の AWS アカウント に配信されるように設定できます。これにより、送信先アカウントでジョブが作成されたときに S3 バッチオペレーションがインベントリレポートを読み取ることができます。
Amazon S3 インベントリのコピー元およびコピー先バケットの詳細については、「ソースバケットと保存先バケット」を参照してください。
インベントリを設定する最も簡単な方法は、Amazon S3 を使用することですが、REST API、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用することもできます。
以下のコンソールの手順には、S3 バッチ操作ジョブに対するアクセス許可を設定するための大まかなステップが含まれています。この手順では、オブジェクトを送信元アカウントから送信先アカウントにコピーし、インベントリレポートを送信先アカウントに保存します。
さまざまなアカウントが所有する送信元および送信先バケットの Amazon S3 インベントリを設定する方法
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3
) を開きます。 -
左側のナビゲーションペインで、[バケット] を選択します。
-
インベントリレポートを保存するための送信先マニフェストバケットを決定 (または作成) します。この手順では、送信先アカウントは、送信先マニフェストバケットとオブジェクトのコピー先バケットの両方を所有するアカウントです。
-
ソースバケットのインベントリレポートを設定します。コンソールを使用してインベントリリストを設定する方法またはインベントリリストファイルを暗号化する方法については、「Amazon S3 インベントリの設定」を参照してください。
インベントリレポートを設定する場合は、リストを保存する送信先バケットを指定します。ソースバケットのインベントリレポートが送信先バケットに発行されます。この手順では、ソースアカウントは、ソースバケットを所有するアカウントです。
出力形式として [CSV] を選択してください。
送信先バケットの情報を入力したら、[Buckets in another account (別のアカウントのバケット)] を選択します。次に、送信先マニフェストバケットの名前を入力します。必要に応じて、送信先アカウントのアカウント ID を入力できます。
インベントリ設定が保存されると、コンソールに次のようなメッセージが表示されます。
Amazon S3 は送信先バケットにバケットポリシーを作成できませんでした。Amazon S3 が送信先バケットに対してデータの保存ができるよう、送信先バケット所有者に次のバケットポリシーの追加を依頼してください。
コンソールには、送信先バケットに使用できるバケットポリシーが表示されます。
-
コンソールに表示される送信先バケットポリシーをコピーします。
-
送信先アカウントで、インベントリレポートが格納されている送信先マニフェストバケットにコピーしたバケットポリシーを追加します。
-
S3 バッチ操作信頼ポリシーに基づいて、送信先アカウントにロールを作成します。この信頼ポリシーの詳細については、「信頼ポリシー」を参照してください。
ロールの作成について詳しくは、「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
アクセス許可を付与します。さらに、ソースオブジェクトバケット内のGET
オブジェクト、アクセスコントロールリスト (ACL)、タグ、およびバージョンにアクセス許可を付与します。また、PUT
オブジェクト、ACL、タグ、およびバージョンに送信先オブジェクトバケットへのアクセス許可を付与します。 -
ソースアカウントで、前の手順で作成したロールにソースバケット内のオブジェクト、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 バッチオペレーション Copy (
CopyObject
) ジョブを作成し、送信先マニフェストバケットから在庫レポートを選択します。送信先アカウントで作成した IAM ロールの ARN が必要です。ジョブの作成に関する全般情報については、「S3 バッチオペレーションジョブの作成」を参照してください。
コンソールを使用してジョブを作成する方法については、「S3 バッチオペレーションジョブの作成」を参照してください。