レプリケーション設定の概要 - 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 は、複数のルールがオブジェクトに適用される場合にどのルールが優先されるかを示します。数値が大きいほど、優先度が高くなります。

  • 現在、削除マーカーはレプリケートされないため、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> ...
  • レプリケート元とレプリケート先のバケットが同じアカウントによって所有されていない場合は、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 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 Referenceの「PutBucketReplication」を参照してください。

  • ソースバケットには、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 に保存された暗号化キーを使用してサーバー側の暗号化 (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>2</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>starship</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> </Rule> </ReplicationConfiguration>

例 4: チュートリアル例

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

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

下位互換性

レプリケーション設定 XML の最新バージョンは V2 です。XML V2 のレプリケーション設定は、ルールの Filter 要素を含み、ルールで S3 Replication Time Control (S3 RTC) を指定します。V2 のレプリケーション設定では、Amazon S3 は削除マーカーをレプリケートしません。したがって、DeleteMarkerReplication 要素を Disabled に設定する必要があります。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> ...