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

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

複寫組態檔案元素

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

注意

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

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

為提供回溯相容性,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> 元素會使用 EnabledDisabled 值,指示是否複寫刪除標記。

<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 複寫時間控制 (S3 RTC)。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 範例,請參閱 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 角色。您可以提供 Amazon Resource Name (ARN) 以指定 IAM 角色,其用於複寫組態 XML 中的 <Role> 元素。如需詳細資訊,請參閱 IAM 使用者指南授予使用者將角色傳遞至 AWS 服務的許可

範例 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.pdfProject/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 API 參考》中的 PutBucketReplication

回溯相容性考量

複寫組態 XML 格式的最新版本為 V2。XML V2 複寫組態是指包含規則 <Filter> 元素和指定 S3 複寫時間控制 (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 會在此物件上新增刪除標記。如果您使用複寫組態 XML V1 格式,Amazon S3 只會複寫由使用者動作產生的刪除標記。換言之,Amazon S3 僅在使用者刪除物件時才會複寫刪除標記。如果 Amazon S3 移除了過期的物件 (在生命週期操作期間),Amazon S3 不會複寫刪除標記。

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