レプリケーション設定 - 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/ のいずれかのキープレフィックスを持つオブジェクトをレプリケートすることを選択できます。2 つのルールを追加して、一方のルールに tax/ キープレフィックスのフィルタを指定し、もう一方のルールに document/ キープレフィックスのフィルタを指定します。

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

基本的なルールの設定

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

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

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

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

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

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

... <Rule> <ID>Rule-1</ID> <Status>rule-Enabled-or-Disabled</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 つまたは複数のレプリケート先バケットに、オブジェクトをレプリケートするように設定できます。

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

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

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

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

... <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> ...

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

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

... <Rule> <ID>Rule-1</ID> <Status>rule-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>rule-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>rule-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>rule-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> ...

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

レプリケート元とレプリケート先のバケットが同じアカウントによって所有されていない場合は、AccessControlTranslation 要素を追加することで、レプリカの所有権をレプリケート先バケットを所有する AWS アカウントに変更できます。

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

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

S3 Replication Time Control (S3 RTC) を有効にする

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

注記

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

... <Destination> <Bucket>arn:aws:s3:::destinationbucket</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 KMS に保存されたキーを使用したサーバー側の暗号化で作成されたオブジェクトが含まれている場合があります。デフォルトでは、Amazon S3 はこれらのオブジェクトをレプリケートしません。オプションで、これらのオブジェクトをレプリケートするように Amazon S3 に指示できます。まず、SourceSelectionCriteria 要素を追加してこの機能を明示的にオプトインし、次にオブジェクトレプリカの暗号化に使用する AWS KMS CMK (レプリケート先バケットの AWS リージョン用) を指定します。

... <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> ...

詳細については、「AWS KMS CMK を使用して、サーバー側の暗号化 (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.pdfProject/project1.txt を持つオブジェクトをレプリケートしますが、キー名 PersonalDoc/documentA のオブジェクトはレプリケートされません。

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

  • 2 番目のルールは、オブジェクトレプリカのストレージクラスを指定します。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::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:::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) を指定するルールを含むものです。V2 のレプリケーション設定では、Amazon S3 はタグベースルールのための削除マーカーをレプリケートしません。したがって、タグベースの V2 ルールを使用する場合は、DeleteMarkerReplication要素をDisabledに設定する必要があります。

レプリケーション設定のバージョンを確認するには、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::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-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Destination> <Bucket>arn:aws:s3:::bucket-name</Bucket> </Destination> </Rule> ...