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

CRR 追加設定: レプリカの所有者の変更

クロスリージョンレプリケーション (CRR) では、デフォルトで、レプリケート元オブジェクトの所有者もレプリカを所有しています。レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有権を変更するためのオプション設定を追加できます。たとえば、オブジェクトのレプリカへのアクセスを制限するために、これを行うことがあります。これは、レプリケーション設定の所有者オーバーライドオプションと呼ばれます。このセクションでは、関連する追加設定についてのみ説明します。レプリケーション設定の構成については、「クロスリージョンレプリケーション」を参照してください。

所有者オーバーライドを設定するには、以下を実行します。

  • レプリカの所有権を変更するよう Amazon S3 に指示するには、レプリケーション設定に所有者オーバーライドオプションを追加してください。

  • レプリカの所有権を変更するための Amazon S3 アクセス権限を付与します。

  • レプリケート先バケットポリシーにアクセス権限を追加して、レプリカの所有権を変更できるようにします。これにより、レプリケート先バケットの所有者がオブジェクトレプリカの所有権を受け入れることができるようになります。

次のセクションでは、これらのタスクを実行する方法を説明します。詳しい手順を含む実例については、「例 3: レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合のレプリカ所有者の変更」を参照してください。

レプリケーション設定への所有者オーバーライドオプションの追加

警告

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

所有者オーバーライドオプションを指定するには、Destination 要素に以下を追加します。

  • Amazon S3 にレプリカの所有権を変更するよう指示する AccessControlTranslation 要素

  • レプリケート先バケット所有者の AWS アカウントを指定する Account 要素

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> ... <Destination> ... <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> <Account>destination-bucket-owner-account-id</Account> </Destination> </Rule> </ReplicationConfiguration>

次のレプリケーション設定例は、Tax キープレフィックスを持つオブジェクトをレプリケート先バケットにレプリケートし、レプリカの所有権を変更するよう Amazon S3 に指示します。

<?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> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <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 アクションのアクセス権限を追加することで、Amazon S3 にレプリカの所有権を変更するアクセス権限を付与します。これは、Amazon S3 がユーザーに代わってオブジェクトを引き受けてレプリケートすることを可能にする、レプリケーション設定で指定した IAM ロールです。

... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ...

レプリカの所有権変更のためのレプリケート先バケットポリシーへのアクセス権限の追加

レプリケート先バケットの所有者は、レプリケート元バケットの所有者に、レプリカの所有権を変更するためのアクセス権限を付与する必要があります。レプリケート先バケットの所有者は、レプリケート元バケットの所有者に、s3:ObjectOwnerOverrideToBucketOwner アクションのためのアクセス権限を付与します。これにより、レプリケート元バケット所有者はオブジェクトレプリカの所有権を受け入れることができるようになります。次のバケットポリシーステートメントの例は、この操作を行う方法を示しています。

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

追加の考慮事項

所有権オーバーライドオプションを設定するときは、次の考慮事項が適用されます。

  • デフォルトでは、レプリケート元オブジェクトの所有者もレプリカを所有しています。Amazon S3 は、オブジェクトのバージョンとそれに関連する ACL をレプリケートします。

     

    所有者オーバーライドを追加すると、Amazon S3 はオブジェクトのバージョンのみをレプリケートし、ACL はレプリケートしません。さらに、Amazon S3 はレプリケート元オブジェクト ACL へのその後の変更をレプリケートしません。Amazon S3 は、レプリケート先バケットの所有者に完全なコントロールを許可するレプリカに ACL を設定します。

     

  • 所有者オーバーライドを有効、または無効にするようにレプリケーション設定を更新すると、以下の処理が行われます。

     

    • レプリケーション設定へ所有者オーバーライドオプションを追加する場合

       

      Amazon S3 がオブジェクトバージョンをレプリケートすると、レプリケート元オブジェクトに関連付けられている ACL が破棄されます。代わりに、ACL は完全なコントロールをレプリケート先バケットの所有者に与えるレプリカに設定されます。レプリケート元オブジェクト ACL へのそれ以降の変更はレプリケートされません。ただし、この ACL 変更は、所有者オーバーライドオプションを設定する前にレプリケートされたオブジェクトバージョンには適用されません。所有者オーバーライドが設定される前にレプリケートされたレプリケート元オブジェクトの ACL 更新は、レプリケートされ続けます (オブジェクトとそのレプリカの所有者が引き続き同じであるため)。

       

    • レプリケーション設定から所有者オーバーライドオプションを削除する場合

       

      Amazon S3 は、レプリケート元バケットと関連 ACL に表示される新しいオブジェクトを、レプリケート先バケットにレプリケートします。所有者オーバーライドを削除する前にレプリケートされたオブジェクトの場合、Amazon S3 によるオブジェクト所有権の変更が有効なため、Amazon S3 は ACL をレプリケートしません。つまり、所有者オーバーライド設定時にレプリケートされたオブジェクトバージョンに設定された ACL は、引き続きレプリケートされません。