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

レプリケーション設定の概要

Amazon S3 はレプリケーション設定を XML 形式で保存します。レプリケーション設定 XML ファイルで、AWS Identity and Access Management (IAM) ロールと 1 つ以上のルールを指定します。

<ReplicationConfiguration> <Role>IAM-role-ARN</Role> <Rule> ... </Rule> <Rule> ... </Rule> ... </ReplicationConfiguration>

Amazon S3 はユーザーの許可なしにオブジェクトをレプリケートすることはできません。レプリケーション設定で指定した IAM ロールでアクセス許可を付与します。Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートする IAM ロールを引き受けます。最初に必要なアクセス許可を IAM ロールに付与する必要があります。これらのアクセス許可の管理の詳細については、「CRR のアクセス許可のセットアップ 」を参照してください。

次のシナリオでは、レプリケーション設定にルールを 1 つ追加します。

  • すべてのオブジェクトをレプリケートします。

  • オブジェクトのサブセットをレプリケートします。ルールにフィルターを追加して、オブジェクトのサブセットを特定します。フィルターでは、ルールが適用されるオブジェクトのサブセットを特定するために、オブジェクトキープレフィックス、タグ、またはその両方の組み合わせを指定します。

オブジェクトの異なるサブセットを選択する場合は、レプリケーション設定に複数のルールを追加します。各ルールでは、オブジェクトの異なるサブセットを選択するフィルターを指定します。たとえば、tax/ または document/ のいずれかのキープレフィックスを持つオブジェクトをレプリケートすることを選択できます。2 つのルールを追加して、一方のルールに tax/ キープレフィックスのフィルタを指定し、もう一方のルールに document/ キープレフィックスのフィルタを指定します。

ここで示している各セクションで、さらに詳しく学習できます。

基本ルール設定

各ルールには、そのルールのステータスと優先順位を含め、削除マーカーをレプリケートするかどうかを指定する必要があります。

  • Status は、ルールが有効か無効かを示します。ルールが無効な場合、Amazon S3 はそのルールで指定されているアクションを実行しません。

  • Priority は、複数のルールがオブジェクトに適用される場合にどのルールが優先されるかを示します。

  • 現在、削除マーカーはレプリケートされないため、DeleteMarkerReplicationDisabled に設定する必要があります。

送信先設定では、Amazon S3 にオブジェクトをレプリケートさせるバケットの名前を指定する必要があります。

次のコードは、ルールの最小要件を示しています。

... <Rule> <ID>Rule-1</ID> <Status>rule-Enabled-or-Diasbled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Destination>       <Bucket>arn:aws:s3:::bucket-name</Bucket> </Destination> </Rule> <Rule> ... </Rule> ... ...

他の設定オプションも指定できます。たとえば、コピー元オブジェクトのストレージクラスとは異なるクラスを、オブジェクトレプリカのストレージクラスで使用するように選択できます。

オプション: フィルタの指定

ルールが適用されるオブジェクトのサブセットを選択するには、オプションのフィルタを追加します。オブジェクトキープレフィックス、オブジェクトタグ、またはその両方の組み合わせでフィルタできます。キープレフィックスとオブジェクトタグの両方でフィルタリングする場合、Amazon S3 は論理 AND 演算子を使用してフィルタを組み合わせます。つまり、このルールは、特定のキープレフィックスと特定のタグを持つオブジェクトのサブセットに適用されます。

オブジェクトキープレフィックスに基づくフィルタを使用してルールを指定するには、次のコードを使用します。指定できるプレフィックスは 1 つだけです。

<Rule> ... <Filter> <Prefix>key-prefix</Prefix> </Filter> ... </Rule> ...

オブジェクトタグに基づくフィルタを使用してルールを指定するには、次のコードを使用します。複数のオブジェクトタグを指定できます。

<Rule> ... <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> ... </Rule> ...

キープレフィックスとオブジェクトタグの組み合わせでルールフィルタを指定するには、このコードを使用します。これらのフィルタは AND 親要素でワープします。Amazon S3 はこれらのフィルタを組み合わせるために論理 AND 演算を実行します。つまり、このルールは、特定のキープレフィックスと特定のタグを持つオブジェクトのサブセットに適用されます。

<Rule> ... <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </Filter> ... </Rule> ...

追加の送信先設定

送信先設定では、Amazon S3 がオブジェクトをレプリケートするバケットを指定します。1 つのレプリケート元バケットから 1 つのレプリケート先バケットにオブジェクトをレプリケートするように CRR を設定できます。レプリケーション設定に複数のルールを追加した場合、すべてのルールで同じ宛先バケットを指定する必要があります。

... <Destination> <Bucket>arn:aws:s3:::destination-bucket</Bucket> </Destination> ...

<Destination> 要素には、以下のオプションを追加できます。

  • オブジェクトレプリカのストレージクラスを指定できます。デフォルトでは、Amazon S3 はコピー元オブジェクトのストレージクラスを使用してオブジェクトレプリカを作成します。例:

    ... <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> ...
  • レプリケート元とレプリケート先のバケットが同じアカウントによって所有されていない場合は、AccessControlTranslation 要素を追加することで、レプリカの所有権をレプリケート先バケットを所有する AWS アカウントに変更できます。

    ... <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> <Account>destination-bucket-owner-account-id</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> ...

    この要素をレプリケーション設定に追加しない場合、レプリカは、ソースオブジェクトを所有するのと同じ AWS アカウントによって所有されます。詳細については、「CRR 追加設定: レプリカの所有者の変更」を参照してください。

  • ソースバケットには、AWS KMS で管理されたキーを使用したサーバー側の暗号化で作成されたオブジェクトが含まれている場合があります。デフォルトでは、Amazon S3 はこれらのオブジェクトをレプリケートしません。オプションとして、最初に SourceSelectionCriteria 要素を追加し、次にオブジェクトレプリカの暗号化に使用する AWS KMS キー (レプリケート先バケットの AWS リージョン用) を指定することで、Amazon S3 にこれらのオブジェクトをレプリケートするよう指示することもできます。

    ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::dest-bucket-name</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ...

    詳細については、「CRR 追加の設定: AWS KMS で管理された暗号化キーを使用してサーバー側の暗号化 (SSE) で作成されたオブジェクト」を参照してください。

レプリケーション設定の例

開始するには、必要に応じて次のレプリケーション設定例をバケットに追加します。

重要

レプリケーション設定をバケットに追加するには、iam:PassRole アクセス許可が必要です。このアクセス許可により、Amazon S3 レプリケーション権限を付与する IAM ロールを渡すことができます。IAM ロールを指定するには、レプリケーション設定 XML の Role 要素で使用されている Amazon リソースネーム (ARN) を指定します。詳細については、IAM ユーザーガイド の「AWS サービスにロールを渡すアクセス許可をユーザーに許可する」を参照してください。

例 1: ルールが 1 つのレプリケーション設定

次の基本的なレプリケーション設定では 1 つのルールを指定します。このルールは、Amazon S3 が引き受けることができる IAM ロールと、オブジェクトレプリカのための送信先バケットを指定します。ルールの Status は、ルールが有効であることを示します。

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Status>Enabled</Status> <Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

レプリケートするオブジェクトのサブセットを選択するために、フィルタを追加できます。次の設定では、フィルタはオブジェクトキープレフィックスを指定します。このルールは、キー名に Tax/ というプレフィックスが付いているオブジェクトに適用されます。

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Status>Enabled</Status> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax/</Prefix> </Filter> <Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

Filter 要素を指定した場合、Priority 要素と DeleteMarkerReplication 要素も含める必要があります。この例では、ルールが 1 つしかないため、優先順位は無関係です。

次の設定では、フィルタは 1 つのプレフィックスと 2 つのタグを指定します。このルールは、指定されたキープレフィックスとタグを持つオブジェクトのサブセットに適用されます。具体的には、キー名に Tax/ プレフィックスがあり、2 つの指定されたオブジェクトタグがあるオブジェクトに適用されます。ルールが 1 つしかないため、優先順位は適用されません。

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Status>Enabled</Status> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <And> <Prefix>Tax/</Prefix> <Tag> <Tag> <Key>tagA</Key> <Value>valueA</Value> </Tag> </Tag> <Tag> <Tag> <Key>tagB</Key> <Value>valueB</Value> </Tag> </Tag> </And> </Filter> <Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

オブジェクトレプリカに対し、次のようにストレージクラスを指定できます。

<?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> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>

Amazon S3 がサポートする任意のストレージクラスを指定できます。

例 2: ルールが 2 つのレプリケーション設定

次のレプリケーション設定について考えます。

  • 各ルールは異なるキープレフィックスでフィルタ処理するため、各ルールはオブジェクトの個別のサブセットに適用されます。Amazon S3 は、Tax/doc1.pdf および Project/project1.txt というキー名を持つオブジェクトをレプリケートしますが、PersonalDoc/documentA というキー名を持つオブジェクトはレプリケートしません。

  • ルールは 2 つの異なるオブジェクトのセットに適用されるため、ルールの優先順位は関係ありません。次の例は、ルール優先順位が適用されたときに何が起こるかを示しています。

  • 2 番目の規則は、オブジェクトのレプリカの記憶域クラスを指定します。Amazon S3 は、それらのオブジェクトレプリカに指定されたストレージクラスを使用します。

  • どちらのルールも同じレプリケート先バケットを指定します。指定するルール数に関係なく、指定できる宛先バケットは 1 つだけです。

<?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> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> ... </Rule> <Rule> <Status>Enabled</Status> <Priority>2</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Project</Prefix> </Filter> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> <StorageClass>STANDARD_IA</StorageClass> </Destination> ... </Rule> </ReplicationConfiguration>

例 3: プレフィックスが重複している 2 つのルールを使用したレプリケーション設定

この設定では、2 つのルールで、重複するキープレフィックス、star/ および starship を持つフィルタを指定します。どちらのルールも、キー名が starship-x のオブジェクトに適用されます。この場合、Amazon S3 はルールの優先順位を使用して適用するルールを決定します。

<ReplicationConfiguration> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Status>Enabled</Status> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>star</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> </Rule> <Rule> <Status>Enabled</Status> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>starship</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> </Rule> </ReplicationConfiguration>

例 4: チュートリアル例

チュートリアル例については、「クロスリージョンレプリケーション (CRR) チュートリアル」を参照してください。

レプリケーション設定の XML 構造の詳細については、Amazon Simple Storage Service API Reference の「PutBucketReplication」を参照してください。

下位互換性

レプリケーション設定 XML の最新バージョンは V2 です。Amazon S3 は、下位互換性のために引き続き V1 設定をサポートしています。レプリケーション設定 XML V1 を使用したことがある場合は、下位互換性に影響を与える以下の問題を考慮してください。

  • レプリケーション設定 XML V2 では、ルールに Filter 要素が含まれています。Filter 要素を使用すると、オブジェクトキープレフィックス、タグ、またはその両方に基づいてオブジェクトフィルタを指定して、ルールが適用されるオブジェクトを範囲指定できます。レプリケーション設定 XML V1 では、キープレフィックスのみに基づくフィルタリングがサポートされていました。その場合、PrefixRule 要素の子要素として直接追加していました。例:

    <?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix>key-prefix</Prefix> <Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

    Amazon S3 は、下位互換性のために引き続き V1 設定をサポートしています。

  • オブジェクトのバージョン ID を指定せずにソースバケットからオブジェクトを削除すると、Amazon S3 は削除マーカーを追加します。V1 のレプリケーション設定 XML を使用した場合、Amazon S3 はユーザーアクションから発生した削除マーカーをレプリケートします。つまり、ユーザーがオブジェクトを削除した場合、Amazon S3 がオブジェクトを削除したのではなく、オブジェクトがライフサイクルアクションの一環として期限切れになったためです。V2 では、Amazon S3 は削除マーカーをレプリケートしないため、DeleteMarkerReplication 要素を Disabled に設定する必要があります。

    ... <Rule> <ID>Rule-1</ID> <Status>rule-Enabled-or-Diasbled</Priority> <Priority>integer</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Destination> <Bucket>arn:aws:s3:::bucket-name</Bucket> </Destination> </Rule> ...