複寫組態 - 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:::example-s3-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:::example-s3-bucket</Bucket> </Destination> ...

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

指定儲存類別

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

... <Destination> <Bucket>arn:aws:s3:::example-s3-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:::example-s3-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% 的物件 (由服務水準協議支援)。

注意

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

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

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

範例 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:::example-s3-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:::example-s3-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:::example-s3-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:::example-s3-bucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>

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

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

在下列複寫組態中:

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

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

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

在此組態中,有兩項規則指定了含 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:::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。XML V2 複寫組態是指包含規則 Filter 元素和指定 S3 複寫時間控制 (S3 RTC) 規則的組態。

若要查看您的複寫組態版本,您可以使用 GetBucketReplication API 操作。如需詳細資訊,請參閱 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:::example-s3-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 規則的刪除標記複寫。如需詳細資訊,請參閱 複寫儲存貯體之間的刪除標記