異なるアカウントでのバケットのレプリケーション設定
ライブレプリケーションは、同一または異なる AWS リージョン にあるバケット間でオブジェクトを自動的に非同期でコピーする機能です。ライブレプリケーションでは、新しく作成されたオブジェクトおよびオブジェクトの更新が、レプリケート元バケットからレプリケート先バケットにコピーされます。詳細については、「リージョン内およびリージョン間でのオブジェクトのレプリケート」を参照してください。
レプリケーションを設定するときは、レプリケート元バケットにレプリケーションルールを追加します。レプリケーションルールにより、レプリケート元のソースバケットオブジェクトと、レプリケートされたオブジェクトが保存されるレプリケート先バケットが定義されます。ルールを作成して、バケット内のすべてのオブジェクト、または特定のキー名のプレフィックス、1 つ以上のオブジェクトタグ、あるいはその両方を持つオブジェクトのサブセットをレプリケートできます。レプリケート先のバケットはレプリケート元バケットと同じ AWS アカウントにあっても、別のアカウントにあってもかまいません。
削除するオブジェクトバージョンの ID を指定した場合、Amazon S3 はソースバケット内のそのオブジェクトバージョンを削除します。しかし、レプリケート先バケット内でその削除をレプリケートすることはありません。つまり、レプリケート先バケットから同じオブジェクトバージョンを削除しません。これは悪意のある削除からデータを保護します。
バケットにレプリケーションルールを追加すると、ルールはデフォルトで有効になるため、保存するとすぐに動作を開始します。
レプリケート元バケットとレプリケート先バケットが異なる AWS アカウントによって所有されている場合のライブレプリケーションの設定は、両方のバケットが同じアカウントによって所有されている場合のレプリケーションの設定と似ています。ただし、クロスアカウントのシナリオでレプリケーションを設定する場合、いくつかの違いがあります。
-
レプリケート先バケット所有者は、レプリケート元バケット所有者に、レプリケート先バケットポリシーでオブジェクトをレプリケートするためのアクセス許可を付与する必要があります。
-
クロスアカウントのシナリオで AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用してサーバー側の暗号化で暗号化されたオブジェクトをレプリケートする場合、KMS キーの所有者は、KMS キーを使用するアクセス許可をレプリケート元バケット所有者に付与する必要があります。詳細については、「クロスアカウントシナリオに対する追加のアクセス許可の付与」を参照してください。
-
デフォルトでは、レプリケートされたオブジェクトはレプリケート元バケット所有者によって所有されます。クロスアカウントのシナリオでは、レプリケーションを設定してレプリケーションされたオブジェクトの所有権をレプリケート先バケットの所有者に変更できます。詳細については、「レプリカ所有者の変更」を参照してください。
レプリケート元バケットとレプリケート先バケットが異なる AWS アカウントによって所有されている場合にレプリケーションを設定するには
-
この例では、レプリケーション元バケットとレプリケーション先バケットを 2 つの異なる AWS アカウントで作成します。AWS CLI には 2 つの認証情報プロファイルが設定されている必要があります。この例では、これらのプロファイル名に
acctAとacctBを使用します。名前付きプロファイルの設定と使用に関する詳細については、「AWS Command Line Interface ユーザーガイド」の「設定ファイルと認証情報ファイルの設定」を参照してください。 -
「同じアカウントでのバケットのレプリケーションの設定」の手順に従って、以下の変更を加えます。
-
レプリケート元バケットアクティビティ (レプリケート元バケットの作成、バージョニングの有効化、および IAM ロールの作成など) に関連するすべての AWS CLI コマンドには、
acctAプロファイルを使用します。acctBプロファイルを使用してレプリケート先バケットを作成します。 -
この例で作成したレプリケート元バケット、およびレプリケート先バケットが IAM ロールのアクセス許可ポリシーで指定されていることを確認してください。
-
-
コンソールでレプリケート先バケットに次のバケットポリシーを追加して、レプリケート元バケットの所有者がオブジェクトをレプリケートできるようにします。手順については、「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。必ず、レプリケート元バケット所有者の AWS アカウント ID、IAM ロール名、およびレプリケート先バケット名を指定してポリシーを編集してください。
注記
次の例を使用するには、
をユーザー自身の情報に置き換えます。user input placeholdersを、レプリケート先のバケットの名前に置き換えます。IAM Amazon リソースネーム (ARN) のamzn-s3-demo-destination-bucketを、このレプリケーション設定に使用する IAM ロールに置き換えます。source-bucket-account-ID:role/source-account-IAM-roleIAM ARN のロールパスは、ロールの作成方法によって異なります。(同じアカウントでのバケットのレプリケーションの設定 に示されているように) AWS CLI を使用してロールを作成した場合、パスは
role/です。サービスロールとして IAM コンソールを使用してロールを作成した場合、パスにはrole-nameservice-role/(つまり、role/service-role/) が含まれます。詳細については、IAM ユーザーガイドの「IAM の ARN」をご参照ください。role-name{ "Version":"2012-10-17", "Id": "", "Statement": [ { "Sid": "Set-permissions-for-objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::source-bucket-account-ID:role/source-account-IAM-role" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource": "arn:aws:s3:::/*" }, { "Sid": "Set-permissions-on-bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::amzn-s3-demo-destination-bucketsource-bucket-account-ID:role/source-account-IAM-role" }, "Action": [ "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource": "arn:aws:s3:::" } ] }amzn-s3-demo-destination-bucket -
(オプション) SSE-KMS で暗号化されたオブジェクトをレプリケートする場合、KMS キーの所有者は、KMS キーを使用するアクセス許可をレプリケート元バケット所有者に付与する必要があります。詳細については、「クロスアカウントシナリオに対する追加のアクセス許可の付与」を参照してください。
-
(オプション) レプリケーションでは、デフォルトで、レプリケート元オブジェクトの所有者もレプリカを所有しています。レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有権を変更するためのオプション設定を追加できます。これには、
ObjectOwnerOverrideToBucketOwner許可の付与が含まれます。詳細については、「レプリカ所有者の変更」を参照してください。