複寫組態 - Amazon Simple Storage Service

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

複寫組態

Amazon S3 將複寫組態存放為XML。在複寫組態XML檔案中,您可以指定 AWS Identity and Access Management (IAM) 角色以及一或多個規則。

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

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

針對下列情況,您可以在複寫組態中新增一個規則:

  • 您想要複寫所有物件。

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

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

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

基本規則組態

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

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

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

  • DeleteMarkerReplication 使用 EnabledDisabled 值,指示是否複寫刪除標記。

在目的地組態中,您必須提供希望 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-bucket</Bucket> </Destination> </Rule> <Rule> ... </Rule> ... ...

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

選用:指定篩選條件

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

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

若要指定含物件金鑰前綴篩選條件的規則,請使用下列程式碼。您只能指定一個前綴。

<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> ...
注意
  • 如果您使用空白<Filter>元素指定規則,則規則會套用至值區中的所有物件。

  • 當您將以標籤為基礎的複寫規則與即時複寫搭配使用時,必須在PutObject作業中使用相符的複寫規則標籤來標記新物件。否則,將不會複寫物件。如果物件在PutObject作業之後加上標籤,也不會複製這些物件。

    若要複寫PutObject作業後已標記的物件,您必須使用 S3 Batch 複寫。如需批次複寫的詳細資訊,請參閱 複寫現有物件

其他目標組態

在目的地組態中,您可以指定希望 Amazon S3 複寫其中物件的儲存貯體。您可以設定組態以將一個來源儲存貯體中的物件複寫至一個或多個目的地儲存貯體。

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

您可以在 <Destination> 元素中新增下列選項。

指定儲存類別

您可以為物件複本指定儲存體方案。根據預設,Amazon S3 會使用來源物件的儲存體方案來建立物件複本,如下列範例所示。

... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET2</Bucket> </Destination> </Rule> ...

變更複本擁有權

當來源和目的地值區不屬於相同帳戶時,您可以將複本的擁有權變更為擁有目的 AWS 帳戶 地值區的擁有權。要做到這一點,請新增 AccessControlTranslation 元素。此元素採用 Destination 的值。

... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-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% 的物件 (由服務層級協定支援)。

注意

EventThresholdTime 可接受的唯一一個有效值為 <Minutes>15</Minutes>

... <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-bucket</Bucket> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <ReplicationTime> <Status>Enabled</Status> <Time> <Minutes>15</Minutes> </Time> </ReplicationTime> </Destination> ...

如需詳細資訊,請參閱 使用 S3 複寫時間控制 (S3RTC) 滿足合規要求。如需API範例,請參閱 Amazon 簡易儲存服務API參考PutBucketReplication中的。

複製使用伺服器端加密建立的物件 AWS KMS

您的來源值區可能包含使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 以伺服器端加密建立的物件。依預設,Amazon S3 不會複寫這些物件。您可以選擇性地指示 Amazon S3 複寫這些物件。要做到這一點,請先新增 SourceSelectionCriteria 元素,明確選擇使用此功能。然後提供用於加密物件複本 AWS 區域 的 AWS KMS key (用於目的地值區的)。下列範例顯示如何指定這些元素。

... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ...

如需詳細資訊,請參閱 複寫加密物件 (-SSE C、SSE-S3、SSE-KMS、DSSE-) KMS

範例複寫組態

若要開始使用,您可以視需要將下列範例複寫組態新增至您的儲存貯體。

重要

若要將複寫組態新增至儲存貯體,您必須具有 iam:PassRole 許可。此權限可讓您傳遞授與 Amazon S3 複寫許可的IAM角色。您可以透過提供複寫組態中Role元素中使用的 Amazon 資源名稱 (ARN) 來指定IAM角色XML。有關詳情,請參閱《使用指南》 AWS 服務中的〈授與使用者將角色傳遞給某個IAM使用者的權限〉

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

下列基本複寫組態可指定一個規則。該規則指定 Amazon S3 可以承擔的IAM角色,並指定物件複本的單一目標儲存貯體。StatusEnabled 值表示規則為作用中。

<?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-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-bucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

如果您指定 Filter 元素,則必須也包含 PriorityDeleteMarkerReplication 元素。在此範例中,由於只有一個規則,因此 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-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-bucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>

您可以指定 Amazon S3 支援的任何儲存體方案。

範例 2:具有兩項規則的複寫組態

在下列複寫組態中:

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

  • 由於規則是套用至兩個不同的物件子集,因此規則優先順序並無關聯。下一個範例說明套用規則優先順序時會發生的情況。

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

在此配置中,這兩個規則指定具有重疊鍵前綴的過濾器,明星/ 以及 星際航空/這兩個規則都會套用到金鑰名稱為 的物件。星際飛船 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:::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 簡單儲存服務API參考PutBucketReplication中的。

回溯相容性

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

若要查看複寫組態版本,您可以使用此GetBucketReplicationAPI作業。如需詳細資訊,請參閱 Amazon 簡易儲存服務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-bucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

    Amazon S3 會繼續支援 V1 組態,以提供回溯相容性。

  • 當您從來源儲存貯體刪除未指定版本 ID 的物件,Amazon S3 會在此物件上新增刪除標記。如果您使用 V1 的複寫組態XML,Amazon S3 會複寫使用者動作產生的刪除標記。換言之,Amazon S3 僅在使用者刪除物件時才會複寫刪除標記。如果 Amazon S3 移除了過期的物件 (做為生命週期操作的一部分),Amazon S3 不會複寫刪除標記。

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