複寫組態檔案元素 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

複寫組態檔案元素

Amazon S3 將複寫組態儲存為 XML。如果您透過 Amazon S3 以程式設計方式設定複寫RESTAPI,您可以在此XML檔案中指定複寫組態的各種元素。如果您透過 AWS Command Line Interface (AWS CLI) 設定複寫,您可以使用 JSON 格式指定複寫組態。如需JSON範例,請參閱 中的逐步解說設定即時複寫的範例

注意

複寫組態XML格式的最新版本為 V2。XML V2 複寫組態包含規則的<Filter>元素,以及指定 S3 複寫時間控制 (S3) 的規則RTC。

若要查看您的複寫組態版本,您可以使用 GetBucketReplicationAPI操作。如需詳細資訊,請參閱 GetBucketReplicationAmazon Simple Storage Service API參考 中。

為了回溯相容性,Amazon S3 繼續支援 XML V1 複寫組態格式。如果您已使用 XML V1 複寫組態格式,請參閱 回溯相容性考量 以取得回溯相容性考量。

在複寫組態XML檔案中,您必須指定 AWS Identity and Access Management (IAM) 角色和一或多個規則,如下列範例所示:

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

Amazon S3 必須先獲得您的許可,才可以複寫物件。您可以使用您在複寫組態中指定的IAM角色,將許可授予 Amazon S3。Amazon S3 會擔任此IAM角色,代表您複寫物件。您必須先將必要的許可授予IAM角色。如需如何管理許可的詳細資訊,請參閱 設定即時複寫的許可

在下列情況下,您只能在複寫組態中新增一個規則:

  • 您想要複寫所有物件。

  • 您想要僅複寫一個物件子集。您在規則中新增篩選條件,以識別物件子集。在篩選條件中,您可以指定物件金鑰字首、標籤或兩者的組合,以識別規則套用的物件子集。篩選條件的目標是確切符合您指定值的物件。

如果您想要複寫不同的物件子集,您可以在複寫組態中新增多個規則。在每個規則中,您會指定篩選條件來選取不同的子集。例如,您可以選擇複寫含有 tax/document/ 索引鍵字首的物件。要做到這一點,您需要新增兩個規則,一個指定 tax/ 索引鍵字首篩選條件,另一個指定 document/ 索引鍵字首。如需物件金鑰字首的詳細資訊,請參閱 使用字首整理物件

下列各節提供了額外的資訊。

基本規則組態

每個規則都必須包括規則的狀態和優先順序。規則還必須指示是否複寫刪除標記。

  • <Status> 元素會使用 值或 Enabled 指出是否啟用或停用規則Disabled。當規則停用時,Amazon S3 即不會執行規則中指定的動作。

  • 當兩個或多個複寫規則發生衝突時, <Priority>元素會指出哪個規則具有優先順序。Amazon S3 會嘗試根據所有複寫規則來複寫物件。不過,如果有兩個或多個規則具有相同目的地儲存貯體,則會根據具有最高優先順序的規則來複寫物件。數字愈高,優先順序愈高。

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

您也可以指定其他組態選項。例如,若物件複本的儲存體方案與來源物件的方案不同,您可以選擇為物件複本使用儲存體方案。

選用:指定篩選條件

若要選擇物件子集以套用規則,請新增選用的篩選條件。您可以依物件索引鍵字首、物件標籤或兩者的組合來進行篩選。如果您依索引鍵字首和物件標籤兩者來篩選,Amazon S3 會使用邏輯 AND 運算子來合併篩選條件。換句話說,規則會套用到具有特定金鑰前綴與特定標籤的物件子集。

根據物件金鑰前綴進行篩選

若要根據物件金鑰字首指定具有篩選條件的規則,請使用下列 XML。每個規則只能指定一個字首。

<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 複寫其中物件的儲存貯體。您可以設定組態以將一個來源儲存貯體中的物件複寫至一個或多個目的地儲存貯體。

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

為具有多個目的地儲存貯體的每個複寫規則指定不同的參數

在單一複寫組態中新增多個目的地儲存貯體時,您可以為每個複寫規則指定不同的參數,如下所示。

... <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 複寫時間控制 (S3RTC)。S3 會在幾秒內RTC複寫大多數物件,並在 15 分鐘內複寫 99.99% 的物件 (以服務層級協議為後盾)。

注意

<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 複寫時間控制滿足合規要求。如需API範例,請參閱 PutBucketReplicationAmazon Simple Storage Service API參考 中。

使用 複寫使用伺服器端加密建立的物件 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的角色。您可以透過提供複寫組態 中 <Role>元素中使用的 Amazon Resource Name (ARN) 來指定IAM角色XML。如需詳細資訊,請參閱 使用者指南 中的將角色傳遞給 的使用者許可 AWS 服務授予 。 IAM

範例 1:具有一項規則的複寫組態

下列基本複寫組態可指定一個規則。此規則會指定 Amazon S3 可以擔任IAM的角色,以及物件複本的單一目的地儲存貯體。的 <Status> 元素值Enabled表示規則有效。

<?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>元素設定的值不相關,因為只有一個規則。

在下列組態中,篩選條件指定了一個前綴和兩個標籤。此規則會套用至具有指定之金鑰前綴和標籤的物件子集。具體而言,它適用於其金鑰名稱中有Tax/字首的物件,以及兩個指定的物件標籤。在此範例中,您為 <Priority>元素設定的值不相關,因為只有一個規則。

<?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:具有兩項規則的複寫組態

在下列複寫組態中,規則會指定下列項目:

  • 每個規則會篩選不同的金鑰前綴,每個規則會套用至不同的物件子集。在此範例中,Amazon S3 會使用金鑰名稱複寫物件 Tax/doc1.pdf 以及 Project/project1.txt,但不會以金鑰名稱複寫物件 PersonalDoc/documentA.

  • 雖然兩個規則都指定了<Priority>元素的值,但規則優先順序無關緊要,因為規則會套用至兩組不同的物件。下一個範例說明套用規則優先順序時會發生的情況。

  • 第二個規則指定物件複本的 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:具有兩項前綴重疊之規則的複寫組態

在此組態中,兩個規則會指定具有重疊金鑰字首的篩選條件,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:::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 參考 PutBucketReplication 中的 。 API

回溯相容性考量

複寫組態XML格式的最新版本為 V2。XML V2 複寫組態包含規則的<Filter>元素,以及指定 S3 複寫時間控制 (S3) 的規則RTC。

若要查看您的複寫組態版本,您可以使用 GetBucketReplicationAPI操作。如需詳細資訊,請參閱 GetBucketReplicationAmazon Simple Storage Service API參考 中。

為了回溯相容性,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 會在此物件上新增刪除標記。如果您使用複寫組態 XML V1 格式,Amazon S3 只會複寫使用者動作所產生的標記。換言之,Amazon S3 僅在使用者刪除物件時才會複寫刪除標記。如果 Amazon S3 移除過期的物件 (作為生命週期動作的一部分),Amazon S3 不會複寫刪除標記。

    在複寫組態 XML V2 格式中,您可以啟用 non-tag-based規則的刪除標記複寫。如需詳細資訊,請參閱複寫儲存貯體之間的刪除標記