レプリケーション設定ファイル要素
Amazon S3 はレプリケーション設定を XML 形式で保存します。Amazon S3 REST API を使用してプログラムでレプリケーションを設定する場合は、この XML ファイルでレプリケーション設定のさまざまな要素を指定します。AWS Command Line Interface (AWS CLI) を使用してレプリケーションを設定する場合は、JSON 形式を使用してレプリケーション設定を指定します。JSON の例については、「ライブレプリケーションの設定例」のチュートリアルを参照してください。
注記
レプリケーション設定 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 ファイルで、次の例に示すように AWS Identity and Access Management (IAM) ロールと 1 つ以上のルールを指定する必要があります。
<ReplicationConfiguration> <Role>IAM-role-ARN</Role> <Rule> ... </Rule> <Rule> ... </Rule> ... </ReplicationConfiguration>
Amazon S3 はユーザーの許可なしにオブジェクトをレプリケートすることはできません。レプリケーション設定で指定した IAM ロールを使用して Amazon S3 にアクセス許可を付与します。Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするこの IAM ロールを引き受けます。まずは必要なアクセス許可を IAM ロールに付与する必要があります。これらのアクセス許可の管理の詳細については、「ライブレプリケーションのアクセス許可の設定」を参照してください。
次のシナリオでは、レプリケーション設定にルールを 1 つのみ追加します。
-
すべてのオブジェクトをレプリケートします。
-
1 つのオブジェクトのサブセットのみをレプリケートします。ルールにフィルターを追加して、オブジェクトのサブセットを特定します。フィルターでは、ルールが適用されるオブジェクトのサブセットを特定するために、オブジェクトキープレフィックス、タグ、またはその両方の組み合わせを指定します。フィルターは、指定した値と完全に一致するオブジェクトをターゲットにします。
オブジェクトの異なるサブセットをレプリケートする場合は、レプリケーション設定に複数のルールを追加します。各ルールでは、異なるサブセットを選択するフィルターを指定します。例えば、tax/ または document/ のいずれかのキープレフィックスを持つオブジェクトをレプリケートするとします。このためには、tax/ キープレフィックスフィルターを指定するルールと、document/ キープレフィックスを指定するもう 1 つのルールの 2 つのルールを追加します。オブジェクトキーのプレフィックスの詳細については、「プレフィックスを使用してオブジェクトを整理する」を参照してください。
ここで示している各セクションで、さらに詳しく学習できます。
基本的なルールの設定
各ルールには、そのルールのステータスと優先順位を含める必要があります。また、ルールに削除マーカーをレプリケートするかどうかを指定する必要もあります。
-
<Status>要素は、EnabledまたはDisabledの値を使用して、ルールが有効か無効かを示します。ルールが無効な場合、Amazon S3 はそのルールで指定されているアクションを実行しません。 -
<Priority>要素は、複数のレプリケーションルールが競合する際に優先するルールを示します。Simple Storage Service (Amazon S3) は、すべてのレプリケーションルールに従ってオブジェクトをレプリケートしようと試みます。ただし、同じレプリケート先バケットを持つルールが 2 つ以上ある場合は、優先度が最も高いルールに従ってオブジェクトがレプリケートされます。数値が大きいほど、優先度が高くなります。 -
<DeleteMarkerReplication>要素は値EnabledまたはDisabledを使用して削除マーカーをレプリケートするかどうかを示します。
<Destination> 要素の設定では、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:::amzn-s3-demo-destination-bucket</Bucket> </Destination> </Rule> <Rule> ... </Rule> ... ...
他の設定オプションも指定できます。たとえば、コピー元オブジェクトのストレージクラスとは異なるクラスを、オブジェクトレプリカのストレージクラスで使用するように選択できます。
オプション: フィルターの指定
ルールが適用されるオブジェクトのサブセットを選択するには、オプションのフィルタを追加します。オブジェクトキープレフィックス、オブジェクトタグ、またはその両方の組み合わせでフィルターできます。キープレフィックスとオブジェクトタグの両方でフィルターする場合、Simple Storage Service (Amazon S3) は論理 AND 演算子を使用してフィルターを組み合わせます。つまり、このルールは、特定のキープレフィックスと特定のタグの両方を持つオブジェクトのサブセットに適用されます。
オブジェクトのキープレフィックスに基づいたフィルタリング
オブジェクトキープレフィックスに基づくフィルタを使用してルールを指定するには、次の XML を使用します。1 つのルールに指定できるプレフィックスは 1 つだけです。
<Rule> ... <Filter> <Prefix>key-prefix</Prefix> </Filter> ... </Rule> ...
オブジェクトタグに基づいたフィルタリング
オブジェクトタグに基づくフィルタを使用してルールを指定するには、次の XML を使用します。複数のオブジェクトタグを指定できます。
<Rule> ... <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> ... </Rule> ...
キープレフィックスとオブジェクトタグを使用したフィルタリング
キープレフィックスとオブジェクトタグの組み合わせでルールフィルターを指定するには、次の XML を使用します。これらのフィルターは、<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> ...
注記
-
空の
<Filter>要素を持つルールを指定すると、ルールはバケット内にある全オブジェクトに適用されます。 -
ライブレプリケーションでタグベースのレプリケーションルールを使用する場合、
PutObjectオペレーションで一致するレプリケーションルールタグを新しいオブジェクトにタグ付けする必要があります。そうしないと、オブジェクトはレプリケートされません。PutObjectオペレーション後にオブジェクトにタグが付けされると、それらのオブジェクトもレプリケートされません。PutObjectオペレーション後にタグ付けされたオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用する必要があります。バッチレプリケーションの詳細については、「既存のオブジェクトのレプリケーション」を参照してください。
追加のレプリケート先の設定
レプリケート先設定では、Amazon S3 がオブジェクトをレプリケートするバケットを指定します。1 つのレプリケート元バケットから 1 つまたは複数のレプリケート先バケットに、オブジェクトをレプリケートするように設定できます。
... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> </Destination> ...
次のオプションを<Destination>要素に追加できます。
トピック
ストレージクラスを指定する
オブジェクトレプリカのストレージクラスを指定できます。デフォルトでは、Amazon S3 は、レプリケート元オブジェクトのストレージクラスを使用してオブジェクトレプリカを作成します。以下に例を示します。
... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-bucket2</Bucket> </Destination> </Rule> ...
レプリカの所有者を変更する
レプリケート元とレプリケート先のバケットが同じアカウントの所有でない場合は、レプリケート先のバケットを所有する AWS アカウント にレプリカの所有権を変更できます。そのためには、<AccessControlTranslation> 要素を追加します。この要素は値 Destination を取ります。
... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-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 分以内にレプリケートします (サービスレベルアグリーメントに基づく)。
注記
<EventThreshold> と <Time> 要素で受け入れられるのは、<Minutes>15</Minutes> の値のみです。
... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ...
詳細については、「暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)」を参照してください。
レプリケーション設定の例
開始するには、必要に応じて次のレプリケーション設定例をバケットに追加します。
重要
レプリケーション設定をバケットに追加するには、iam:PassRole アクセス許可が必要です。このアクセス許可により、Amazon S3 レプリケーションアクセス許可を付与する IAM ロールを渡すことができます。IAM ロールを指定するには、レプリケーション設定 XML の <Role> 要素で使用されている Amazon リソースネーム (ARN) を指定します。詳細については、IAM ユーザーガイドの「AWS のサービス サービスにロールを渡すアクセス権限をユーザーに付与する」を参照してください。
例 1: ルールが 1 つのレプリケーション設定
次の基本的なレプリケーション設定では 1 つのルールを指定します。このルールは、Amazon S3 が引き受けることができる IAM ロールと、オブジェクトレプリカ用のレプリケート先バケットを指定します。Enabled の <Status> 要素の値は、ルールが有効であることを示します。
<?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:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-bucket</Bucket> </Destination> </Rule> </ReplicationConfiguration>
<Filter> 要素を指定した場合、<Priority> 要素と <DeleteMarkerReplication> 要素も含める必要があります。この例では、<Priority> 要素に設定した値は、ルールが 1 つしかないため、関係ありません。
次の設定では、フィルタは 1 つのプレフィックスと 2 つのタグを指定します。このルールは、指定されたキープレフィックスとタグを持つオブジェクトのサブセットに適用されます。具体的には、キー名に プレフィックスがあり、2 つの指定されたオブジェクトタグがあるオブジェクトに適用されます。この例では、Tax/<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:::amzn-s3-demo-destination-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:::amzn-s3-demo-destination-bucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>
Amazon S3 がサポートする任意のストレージクラスを指定できます。
例 2: ルールが 2 つのレプリケーション設定
次のレプリケーション設定では、ルールで以下を指定します。
-
各ルールは異なるキープレフィックスでフィルタリングするため、各ルールはオブジェクトの個別のサブセットに適用されます。例えば、Simple Storage Service (Amazon S3) は、キー名
とTax/doc1.pdfを持つオブジェクトをレプリケートしますが、キー名Project/project1.txtのオブジェクトはレプリケートされません。PersonalDoc/documentA -
どちらのルールも
<Priority>要素の値を指定しますが、ルールの優先度は 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:::amzn-s3-demo-destination-bucket</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:::amzn-s3-demo-destination-bucket</Bucket> <StorageClass>STANDARD_IA</StorageClass> </Destination> ... </Rule> </ReplicationConfiguration>
例 3: プレフィックスが重複している 2 つのルールを使用したレプリケーション設定
この設定では、2 つのルールで、重複するキープレフィックス、 および star を持つフィルターを指定します。どちらのルールも、キー名が starship のオブジェクトに適用されます。この場合、Amazon S3 はルールの優先順位を使用して適用するルールを決定します。数値が大きいほど、優先度が高くなります。starship-x
<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:::amzn-s3-demo-destination-bucket</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:::amzn-s3-demo-destination-bucket</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 フォーマットは、キープレフィックスのみに基づくフィルタリングをサポートしていました。この場合は、<Prefix>要素を<Rule>要素の子要素として直接追加します。以下に例を示します。<?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:::amzn-s3-demo-destination-bucket</Bucket> </Destination> </Rule> </ReplicationConfiguration> -
オブジェクトのバージョン ID を指定せずにレプリケート元バケットからオブジェクトを削除すると、Amazon S3 は削除マーカーを追加します。V1 のレプリケーション設定 XML V1 フォーマットを使用した場合、Amazon S3 はユーザーアクションから発生した削除マーカーをレプリケートします。つまり、Amazon S3 はユーザーがオブジェクトを削除した場合にのみ、削除マーカーをレプリケートします。期限切れのオブジェクトが (ライフサイクルアクションの一部として) Amazon S3 によって削除された場合、Amazon S3 は削除マーカーをレプリケートしません。
レプリケーション設定 XML V2 フォーマットでは、タグベース以外のルールのために削除マーカーレプリケーションを有効にすることができます。詳細については、「バケット間での削除マーカーのレプリケーション」を参照してください。