レプリケーション設定 - Amazon Simple Storage Service

レプリケーション設定

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 ロールに付与する必要があります。これらのアクセス許可の管理の詳細については、「許可のセットアップ」を参照してください。

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

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

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

オブジェクトの異なるサブセットをレプリケートする場合は、レプリケーション設定に複数のルールを追加します。各ルールでは、オブジェクトの異なるサブセットを選択するフィルターを指定します。例えば、tax/ または document/ のいずれかのキープレフィックスを持つオブジェクトをレプリケートするとします。このためには、tax/ キープレフィックスフィルターを指定するルールと、document/ キープレフィックスを指定するもう 1 つのルールの 2 つのルールを追加します。オブジェクトキーのプレフィックスの詳細については、「プレフィックスを使用してオブジェクトを整理する」を参照してください。

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

基本的なルールの設定

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

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

  • Priorityは、複数のレプリケーションルールが競合する際に優先するルールを示します。Simple Storage Service (Amazon S3) は、すべてのレプリケーションルールに従ってオブジェクトをレプリケートしようと試みます。ただし、同じレプリケート先バケットを持つルールが 2 つ以上ある場合は、優先度が最も高いルールに従ってオブジェクトがレプリケートされます。数値が大きいほど、優先度が高くなります。

  • DeleteMarkerReplication は値 Enabled または Disabled を使用して削除マーカーをレプリケートするかどうかを示します。

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

次の例は、V2 ルールの最小要件を示しています。Amazon S3 は、下位互換性のために、引き続き XML V1 形式をサポートしています。 を参照してください。詳細については、「下位互換性」を参照してください。

... <Rule> <ID>Rule-1</ID> <Status>Enabled-or-Disabled</Status> <Filter> <Prefix></Prefix> </Filter> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled-or-Disabled</Status> </DeleteMarkerReplication> <Destination>       <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> </Destination> </Rule> <Rule> ... </Rule> ... ...

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

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

ルールが適用されるオブジェクトのサブセットを選択するには、オプションのフィルタを追加します。オブジェクトキープレフィックス、オブジェクトタグ、またはその両方の組み合わせでフィルターできます。キープレフィックスとオブジェクトタグの両方でフィルターする場合、Simple Storage Service (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 つまたは複数のレプリケート先バケットに、オブジェクトをレプリケートするように設定できます。

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> </Destination> ...

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

ストレージクラスを指定する

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

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <StorageClass>storage-class</StorageClass> </Destination> ...

複数の宛先バケットを追加する

次のように、単一のレプリケーション設定に複数のレプリケート先バケットを追加できます。

... <Rule> <ID>Rule-1</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled-or-Disabled</Status> </DeleteMarkerReplication> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> <Rule> <ID>Rule-2</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled-or-Disabled</Status> </DeleteMarkerReplication> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET2</Bucket> </Destination> </Rule> ...

複数のレプリケート先バケットを持つレプリケーションルールごとに異なるパラメータを指定します。

1 つのレプリケーション設定に複数のレプリケート先バケットを追加する場合、次のように、レプリケーションルールごとに異なるパラメータを指定できます。

... <Rule> <ID>Rule-1</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> <Rule> <ID>Rule-2</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled</Status> </DeleteMarkerReplication> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <ReplicationTime> <Status>Enabled</Status> <Time> <Minutes>15</Minutes> </Time> </ReplicationTime> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET2</Bucket> </Destination> </Rule> ...

レプリカの所有者を変更する

レプリケート元とレプリケート先のバケットが同じアカウントの所有でない場合は、レプリケート先のバケットを所有する AWS アカウント にレプリカの所有権を変更できます。そのためには、AccessControlTranslation 要素を追加します。この要素は値 Destination を取ります。

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

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

S3 レプリケーション時間コントロールの有効化

S3 Replication Time Control (S3 RTC) はレプリケーション設定で有効にできます。S3 RTC は、ほとんどのオブジェクトを数秒でレプリケートし、オブジェクトの 99.99% を 15 分以内にレプリケートします (サービスレベルアグリーメントに基づく)。

注記

EventThresholdTime で受け入れられるのは、<Minutes>15</Minutes> の値のみです。

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <ReplicationTime> <Status>Enabled</Status> <Time> <Minutes>15</Minutes> </Time> </ReplicationTime> </Destination> ...

詳細については、「S3 Replication Time Control (S3 RTC) を使用してコンプライアンス要件を満たす」を参照してください。API の例については、Amazon Simple Storage Service API リファレンスの「PutBucketReplication」を参照してください。

AWS KMS を使用してサーバー側の暗号化で作成されたオブジェクトをレプリケートする

レプリケート元バケットには、AWS Key Management Service (AWS KMS) (SSE-KMS) キーを使用したサーバー側の暗号化で作成されたオブジェクトが含まれている場合があります。デフォルトでは、Amazon S3 はこれらのオブジェクトをレプリケートしません。オプションで、これらのオブジェクトをレプリケートするように Amazon S3 に指示できます。これを行うには、まず、SourceSelectionCriteria 要素を追加することで、この機能を明示的にオプトインします。次に、オブジェクトレプリカの暗号化に使用するための AWS KMS key (レプリケート先バケットの AWS リージョン 用) を入力します。次の例は、これらの要素を指定する方法を示しています。

... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ...

詳細については、「サーバー側の暗号化 (SSE-C、SSE-S3、SSE-KMS、DSSE-KMS) で作成されたオブジェクトをレプリケートする」を参照してください。

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

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

重要

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

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

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

<?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:::DOC-EXAMPLE-BUCKET</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::account-id: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:::DOC-EXAMPLE-BUCKET</Bucket></Destination> </Rule> </ReplicationConfiguration>

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

次の設定では、フィルタは 1 つのプレフィックスと 2 つのタグを指定します。このルールは、指定されたキープレフィックスとタグを持つオブジェクトのサブセットに適用されます。具体的には、キー名に Tax/ プレフィックスがあり、2 つの指定されたオブジェクトタグがあるオブジェクトに適用されます。Priority はルールが 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> <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:::DOC-EXAMPLE-BUCKET</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:::DOC-EXAMPLE-BUCKET</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>

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

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

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

  • 各ルールは異なるキープレフィックスでフィルタリングするため、各ルールはオブジェクトの個別のサブセットに適用されます。例えば、Simple Storage Service (Amazon S3) は、キー名 Tax/doc1.pdfProject/project1.txt を持つオブジェクトをレプリケートしますが、キー名 PersonalDoc/documentA のオブジェクトはレプリケートされません。

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

  • 2 番目のルールは、オブジェクトレプリカの S3 標準 – IA ストレージクラスを指定します。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> <Status>Enabled</Status> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</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:::DOC-EXAMPLE-BUCKET1</Bucket> <StorageClass>STANDARD_IA</StorageClass> </Destination> ... </Rule> </ReplicationConfiguration>
例 3: プレフィックスが重複している 2 つのルールを使用したレプリケーション設定

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

<ReplicationConfiguration> <Role>arn:aws:iam::account-id: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:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> <Rule> <Status>Enabled</Status> <Priority>2</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>starship</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> </ReplicationConfiguration>
例 4: チュートリアル例

チュートリアルについては、「チュートリアル: レプリケーションの設定例」を参照してください。

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

下位互換性

レプリケーション設定 XML の最新バージョンは V2 です。XML V2 レプリケーション設定は、ルールの Filter 要素と S3 Replication Time Control (S3 RTC) を指定するルールを含むものです。

レプリケーション設定のバージョンを確認するには、GetBucketReplication API オペレーションを使用します。詳細については、「Amazon Simple Storage Service API リファレンス」の「GetBucketReplication」を参照してください。

Amazon S3 は、後方互換性のために引き続き XML 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::account-id:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix>key-prefix</Prefix> <Destination><Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket></Destination> </Rule> </ReplicationConfiguration>

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

  • オブジェクトのバージョン ID を指定せずにレプリケート元バケットからオブジェクトを削除すると、Amazon S3 は削除マーカーを追加します。V1 のレプリケーション設定 XML を使用した場合、Simple Storage Service (Amazon S3) はユーザーアクションから発生した削除マーカーをレプリケートします。つまり、Amazon S3 はユーザーがオブジェクトを削除した場合にのみ、削除マーカーをレプリケートします。期限切れのオブジェクトが (ライフサイクルアクションの一部として) Amazon S3 によって削除された場合、Amazon S3 は削除マーカーをレプリケートしません。

    V2 のレプリケーション設定では、タグベース以外のルールのために削除マーカーレプリケーションを有効にすることができます。詳細については、「バケット間での削除マーカーのレプリケーション」を参照してください。