メニュー
Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

クロスリージョンレプリケーション追加設定: レプリカの所有者の変更

ソースバケットまたはソースオブジェクトの所有者に関係なく、レプリカの所有権を送信先バケットを所有する AWS アカウントに変更するように Amazon S3 に指示できます。オブジェクトのレプリカへのアクセスを制限するために、これを選択することができます。これは、レプリケーション設定の所有者オーバーライドオプションとも呼ばれます。

警告

所有者オーバーライドオプションを追加するのは、ソースバケットと送信先バケットが異なる AWS アカウントによって所有されている場合のみです。

クロスアカウントシナリオでのレプリケーション設定の設定については、「異なる AWS アカウントが所有するバケットのクロスリージョンレプリケーションをセットアップ」を参照してください。このセクションでは、Amazon S3 がレプリカ所有権を送信先バケットを所有する AWS アカウントに変更するための追加情報のみを提供します。

  • 次の例に示すように、<Account> 要素と <AccessControlTranslation> 要素を<Destination> 要素の子要素として追加します。

    <?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix></Prefix> <Destination> <Bucket>arn:aws:s3:::destination-bucket</Bucket> <Account>destination-bucket-owner-account-id</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> </Rule> </ReplicationConfiguration>
  • レプリカの所有権の変更を Amazon S3 に許可するアクセス許可を IAM ロールにさらに追加します。

    次のポリシーステートメントに示すように、送信先バケットのすべてのレプリカの s3:ObjectOwnerOverrideToBucketOwner アクションに IAM ロールアクセス許可を許可します。

    ... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ...
  • 送信先バケットのバケットポリシーで、ソースバケットアクセス許可のある AWS アカウントにレプリカの所有権を変更することを許可する s3:ObjectOwnerOverrideToBucketOwner アクションのためのアクセス許可を追加します。(実際には、オブジェクトレプリカの所有権を受け入れます)。バケットポリシーに次のポリシーステートメントを追加できます。

    ... { "Sid":"1", "Effect":"Allow", "Principal":{"AWS":"source-bucket-account-id"}, "Action":["s3:ObjectOwnerOverrideToBucketOwner"], "Resource":"arn:aws:s3:::destination-bucket/*" } ...

警告

この所有者オーバーライドオプションをレプリケーション設定に追加するのは、2 つのバケットが異なる AWS アカウントによって所有されている場合のみです。Amazon S3 はバケットが同じか異なるアカウントで所有されているかどうかをチェックしません。両方のバケットが同じ AWS アカウントによって所有されている場合にこのオプションを追加すると、所有者オーバーライドは引き続き適用されます。つまり、Amazon S3 は送信先バケット所有者にフルアクセス権を付与し、その後の更新をソースオブジェクトアクセスコントロールリスト (ACL) にレプリケートしません。レプリカの所有者は、PUT ACL リクエストを持つレプリカに関連付けられた ACL に直接変更できますが、レプリケーションでは変更できません。

例については、「チュートリアル 3: レプリカ所有者をレプリケート先バケット所有者に変更する」を参照してください。

ソースバケットと送信先バケットで異なる AWS アカウントによって所有されているクロスアカウントのシナリオでは、以下が適用されます。

  • オプションの所有者オーバーライドオプションを使用したレプリケーション構成の作成 - デフォルトでは、ソースオブジェクトの所有者もレプリカを所有します。また、必要に応じて、オブジェクトバージョンとともに、Amazon S3 もオブジェクトバージョンに関連付けられた ACL をレプリケートします。

     

    オプションの所有者オーバーライド設定を追加して、Amazon S3 がレプリカ所有者を送信先バケットを所有する AWS アカウントに変更するように指示できます。この場合、所有者は同じではないため、Amazon S3 はオブジェクトバージョンのみをレプリケートし、ACL はレプリケートしません (また、Amazon S3 はソースオブジェクト ACL に後続の変更をレプリケートしません)。Amazon S3 は、完全な制御を送信先バケット所有者に許可するレプリカに ACL を設定します。

     

  • レプリケーション設定の更新 (所有者オーバーライドオプションの有効化/無効化) - レプリケーション設定がバケットに追加されているとします。Amazon S3 はオブジェクトバージョンを送信先バケットにレプリケートします。それに加えて、Amazon S3 もオブジェクト ACL をコピーし、それをオブジェクトレプリカに関連付けます。

     

    • ここで、レプリケーション設定を更新し、所有者オーバーライドオプションを追加するとします。Amazon S3 がオブジェクトバージョンをレプリケートすると、ソースオブジェクトに関連付けられている ACL が破棄されます。代わりに完全な制御を送信先バケット所有者に与えるレプリカに ACL を設定します。ソースオブジェクト ACL へのそれ以降の変更はレプリケートされません。

      この変更は、所有者オーバーライドオプションを設定する前にレプリケートされたオブジェクトバージョンには適用されません。つまり、所有者オーバーライドが設定される前にレプリケートされたソースオブジェクトの ACL 更新は、レプリケートされ続けます (オブジェクトとそのレプリカの所有者が引き続き同じため)。

       

    • ここでは、後で所有者オーバーライド設定を無効にするとします。Amazon S3 は、新しいオブジェクトバージョンおよび関連するオブジェクト ACL を宛先にレプリケートし続けます。所有者オーバーライドを無効にすると、レプリケーション設定で所有者オーバライドセット (Amazon S3 が有効にしたオブジェクト所有権の変更) を設定したときにレプリケートされたオブジェクトには適用されません。つまり、所有者オーバーライドセットがあったときにレプリケートされたオブジェクトバージョン上の ACL は引き続きレプリケートされません。