異なるアカウントでのバケットのレプリケーション設定
ライブレプリケーションは、同一または異なる 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/service-role/source-account-IAM-role
IAM サービスロールを手動で作成した場合は、次のポリシー例に示すように、IAM ARN のロールパスを
role/service-role/
として設定します。詳細については、「IAM ユーザーガイド」の「IAM ARN」を参照してください。{ "Version":"2012-10-17", "Id":"", "Statement":[ { "Sid":"Set-permissions-for-objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
source-bucket-account-ID
:role/service-role/source-account-IAM-role
" }, "Action":["s3:ReplicateObject", "s3:ReplicateDelete"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" }, { "Sid":"Set permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::source-bucket-account-ID
:role/service-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
許可の付与が含まれます。詳細については、「レプリカ所有者の変更」を参照してください。