

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

# 複寫區域內和跨區域的物件
<a name="replication"></a>

您可以使用複寫來啟用跨 Amazon S3 儲存貯體的自動、非同步物件複製。設定用於物件複寫的儲存貯體可由相同 AWS 帳戶 或不同帳戶擁有。您可將物件複寫到單一目的地儲存貯體或多個目的地儲存貯體。目的地儲存貯體可以位於與來源儲存貯體不同的 AWS 區域 或相同區域內。

複寫共有兩種類型：*即時複寫*和*隨需複寫*。
+ **即時複寫** – **若要在寫入來源儲存貯體時自動複寫新的和更新的物件**，請使用即時複寫。在您設定複寫之前，即時複寫不會複寫儲存貯體中存在的任何物件。若要複寫在設定複寫之前已存在的物件，請使用隨需複寫。
+ **隨需複寫** – **若要隨需從來源儲存貯體將現有物件複寫**至一個或多個目的地儲存貯體，請使用 S3 批次複寫。如需複寫現有物件的詳細資訊，請參閱[何時使用 S3 批次複寫](#batch-replication-scenario)。

即時複寫共有兩個種類：*跨區域複寫 (CRR)* 和*相同區域複寫 (SRR)*。
+ **跨區域複寫 (CRR)** – 您可以使用 CRR 在不同的 Amazon S3 儲存貯體中複寫物件 AWS 區域。如需 CRR 的詳細資訊，請參閱[何時使用跨區域複寫](#crr-scenario)。
+ **相同區域複寫 (SRR)** - 您可以使用 SRR 在相同 AWS 區域中跨 Amazon S3 儲存貯體複製物件。如需 SRR 的詳細資訊，請參閱[何時使用相同區域複寫](#srr-scenario)》。

**Topics**
+ [

## 為什麼要使用複寫？
](#replication-scenario)
+ [

## 何時使用跨區域複寫
](#crr-scenario)
+ [

## 何時使用相同區域複寫
](#srr-scenario)
+ [

## 使用雙向複寫的時機
](#two-way-replication-scenario)
+ [

## 何時使用 S3 批次複寫
](#batch-replication-scenario)
+ [

## 工作負載需求和即時複寫
](#replication-workload-requirements)
+ [

# Amazon S3 複寫的內容？
](replication-what-is-isnot-replicated.md)
+ [

# 複寫的需求與考量
](replication-requirements.md)
+ [

# 設定即時複寫概觀
](replication-how-setup.md)
+ [

# 管理或暫停即時複寫
](disable-replication.md)
+ [

# 使用批次複寫來複寫現有物件
](s3-batch-replication-batch.md)
+ [

# 故障排除複寫
](replication-troubleshoot.md)
+ [

# 使用指標、事件通知和狀態監控複寫
](replication-metrics.md)

## 為什麼要使用複寫？
<a name="replication-scenario"></a>

複寫可協助您執行以下項目：
+ **保留中繼資料的同時複寫物件** – 您可以使用複寫，來製作可保留所有中繼資料 (例如原始物件建立時間和版本 ID) 的物件複本。如果您需要確保複本與來源物件相同，則此功能非常重要。
+ **將物件複寫到不同的儲存類別** – 您可以使用複寫直接將物件放置在目的地儲存貯體中的 S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive 或其他儲存類別。您也可以複寫資料到相同的儲存體類別，並在目的地儲存貯體上使用生命週期組態，來隨著存在時間移動物件到較冷的儲存體。
+ **在不同擁有權下維護物件複本** – 無論誰擁有來源物件，您都可以指示 Amazon S3 將複本擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。這稱為*擁有者覆寫*選項。您可以使用這個選項來限制物件複本的存取。
+ **將物件存放於多個 AWS 區域** - 為了確保資料存放位置的地理差異，您可以跨不同的 設定多個目的地儲存貯體 AWS 區域。此功能可以協助您滿足特定的合規要求。
+ 在 **15 分鐘內複寫物件** – 若要在可預測的時間範圍內在相同 AWS 區域 或跨不同區域複寫資料，您可以使用 S3 複寫時間控制 (S3 RTC)。S3 RTC 會在 15 分鐘內，複寫 99.99% 在 Amazon S3 中存放的新物件 (由服務水準協議支援)。如需詳細資訊，請參閱[使用 S3 複寫時間控制來滿足合規要求](replication-time-control.md)。
**注意**  
S3 RTC 不適用於批次複寫。批次複寫是隨需複寫任務，可以使用 S3 批次操作來追蹤。如需詳細資訊，請參閱[追蹤任務狀態和完成報告](batch-ops-job-status.md)。
+ **同步儲存貯體、複寫現有物件，以及複寫先前失敗或已複寫的物件** – 若要同步儲存貯體和複寫現有物件，請使用批次複寫做為隨需複寫動作。如需何時使用批次複寫的詳細資訊，請參閱[何時使用 S3 批次複寫](#batch-replication-scenario)。
+ **複寫物件並容錯移轉到另一個 AWS 區域中的儲存貯體** - 若要在資料複寫期間跨儲存貯體保持所有中繼資料和物件同步，請在設定 Amazon S3 多區域存取點容錯移轉控制之前，使用雙向複寫規則。雙向複寫規則有助於確保將資料寫入流量容錯移轉至其中的 S3 儲存貯體時，該資料隨後會複寫回來源儲存貯體。

## 何時使用跨區域複寫
<a name="crr-scenario"></a>

S3 跨區域複寫 (CRR) 用於在不同 AWS 區域中跨 Amazon S3 儲存貯體複製物件。CRR 可協助您執行以下作業：
+ **達到合規要求** – 雖然 Amazon S3 預設會跨多個地理位置遙遠的可用區域存放您的資料，但合規要求可能讓您必須將資料存放在更遠的距離。若要滿足這些要求，請使用跨區域複寫來在相距遙遠的 AWS 區域之間複寫資料。
+ **將延遲降至最低** – 如果您的客戶位於兩個地理位置，您可以透過在地理位置上更接近使用者的 中維護物件複本 AWS 區域 ，將存取物件的延遲降至最低。
+ **提高營運效率** – 如果您的運算叢集位於 AWS 區域 分析相同物件集的兩個不同區域，您可以選擇在這些區域中維護物件複本。

## 何時使用相同區域複寫
<a name="srr-scenario"></a>

相同區域複寫 (SRR) 用於在相同 AWS 區域中跨 Amazon S3 儲存貯體複製物件。SRR 可協助您執行以下作業：
+ **將日誌匯總到單一儲存貯體** – 如果您在多個儲存貯體或跨多個帳戶存放日誌，您可以輕鬆將日誌複寫到單一、區域內的儲存貯體。這麼做可讓您更容易處理單一位置中的日誌。
+ **設定生產和測試帳戶間的即時複寫** – 如果您或客戶的生產和測試帳戶使用相同資料，您可以在這些多個帳戶間複寫物件，同時維護物件中繼資料。
+ **遵守資料主權法律** – 您可能需要將資料的多個副本存放在特定區域內的個別 AWS 帳戶 中。當合規法規不允許資料離開您的國家時，相同區域內的複寫可協助您自動複寫重要資料。

## 使用雙向複寫的時機
<a name="two-way-replication-scenario"></a>
+ **跨多個 建置共用資料集 AWS 區域** – 透過複本修改同步，您可以在複寫物件上輕鬆複寫中繼資料變更，例如物件存取控制清單 (ACLs)、物件標籤或物件鎖定。如果您想要讓所有物件和物件中繼資料變更保持同步，則此雙向複寫很重要。在相同或不同 AWS 區域的兩個以上儲存貯體之間執行雙向複寫時，您可以在新的或現有的複寫規則上[啟用複本修改同步](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-for-metadata-changes.html#enabling-replication-for-metadata-changes)。
+ **在容錯移轉期間保持跨區域的資料同步** – 您可以透過直接從多區域存取點使用 S3 跨區域複寫 (CRR) 設定雙向複寫規則， AWS 區域 來同步 之間的儲存貯體中的資料。若要在啟動容錯移轉時做出明智的決策，您也可以啟用 S3 複寫指標，以便在 Amazon CloudWatch、S3 複寫時間控制 (S3 RTC) 中，或從多區域存取點監控複寫。
+ **讓您的應用程式高度可用** - 即使在區域流量中斷的情況下，您也可以使用雙向複寫規則，在資料複寫期間，跨儲存貯體讓所有中繼資料和物件保持同步。

## 何時使用 S3 批次複寫
<a name="batch-replication-scenario"></a>

批次複寫做為隨需選項，將現有物件複寫到不同的儲存貯體。與即時複寫不同，這些任務可以視需要執行。批次複寫可協助您執行以下項目：
+ **複寫現有物件** – 您可以使用批次複寫來複寫在設定相同區域複寫或跨區域複寫之前，即已新增到儲存貯體中的物件。
+ **複寫先前複寫失敗的物件** – 您可以篩選批次複寫任務，以嘗試複寫其複寫狀態為 **FAILED** 的物件。
+ **複寫已複寫過的物件** – 您可能需要將資料的多個副本存放在不同的 AWS 帳戶 或 AWS 區域。批次複寫可以將現有物件複寫到新增的目的地。
+ **複寫根據複寫規則建立之物件的複本** – 複寫組態會在目的地儲存貯體中建立物件的複本。物件的複本只能使用批次複寫來複寫。

## 工作負載需求和即時複寫
<a name="replication-workload-requirements"></a>

根據您的工作負載需求而定，部分類型的即時複寫可能會更適合您的使用案例。請使用下表來判斷要針對您的情況使用的複寫類型，以及是否針對工作負載使用 S3 複寫時間控制 (S3 RTC)。S3 RTC 會在 15 分鐘內，複寫 99.99% 在 Amazon S3 中存放的新物件 (由服務水準協議 (或 SLA) 支援)。如需詳細資訊，請參閱[使用 S3 複寫時間控制來滿足合規要求](replication-time-control.md)。


| 工作負載需求 | S3 RTC (15 分鐘 SLA) | 跨區域複寫 (CRR) | 相同區域複寫 (SRR) | 
| --- | --- | --- | --- | 
| 在不同的 之間複寫物件 AWS 帳戶 | 是 | 是 | 是 | 
| 在 24-48 小時內複寫相同物件 AWS 區域 （非 SLA 後端） | 否 | 否 | 是 | 
| 在 24-48 小時內複寫不同物件 AWS 區域 （非 SLA 後端） | 否 | 是 | 否 | 
|  可預測的複寫時間：由 SLA 支援，可在 15 分鐘內複寫 99.9% 的物件  | 是 | 否 | 否 | 

# Amazon S3 複寫的內容？
<a name="replication-what-is-isnot-replicated"></a>

Amazon S3 僅會複寫儲存貯體中已設定複寫的特定項目。

**Topics**
+ [

## 使用複寫組態會複寫什麼項目？
](#replication-what-is-replicated)
+ [

## 使用複寫組態不會複寫什麼項目？
](#replication-what-is-not-replicated)

## 使用複寫組態會複寫什麼項目？
<a name="replication-what-is-replicated"></a>

依預設，Amazon S3 會複寫下列項目：
+ 在您新增複寫組態之後建立的物件。
+ 未加密的物件。
+ 使用客戶提供的金鑰 (SSE-C) 加密的物件、在 Amazon S3 受管金鑰 (SSE-S3) 下靜態加密的物件，或存放在 AWS Key Management Service (SSE-KMS) 中的 KMS 金鑰。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
+ 從來源物件到複本的物件中繼資料。如需將中繼資料從複本複寫至來源物件的相關資訊，請參閱 [使用複本修改同步來複寫中繼資料變更](replication-for-metadata-changes.md)。
+ 僅限來源儲存貯體中的物件 (且儲存貯體擁有者具備讀取物件與讀取存取控制清單 (ACL) 的許可)。

  如需資源擁有權的詳細資訊，請參閱「[Amazon S3 儲存貯體和物件擁有權](access-policy-language-overview.md#about-resource-owner)」。
+ 除非您指示 Amazon S3 在來源與目的地儲存貯體不屬於相同帳戶時變更複本擁有權，否則物件 ACL 都會更新。

  如需詳細資訊，請參閱「[變更複本擁有者](replication-change-owner.md)」。

  Amazon S3 可能需要一些時間才能讓兩個 ACL 保持同步。此項擁有權變更只適用於將複寫組態新增至儲存貯體之後所建立的物件。
+  物件標籤 (如果有)。
+ S3 物件鎖定保留資訊 (如果有)。

  當 Amazon S3 複寫的物件已套用保留資訊時，就會將這些相同的保留控制套用至複本，進而覆寫目的地儲存貯體上設定的預設保留期間。如果您沒有將保留控制套用到來源儲存貯體中的物件，而且您複寫至已設定預設保留期間的目的地儲存貯體，則系統會將目的地儲存貯體預設保留期套用至物件複本。如需詳細資訊，請參閱「[使用物件鎖定來鎖定物件](object-lock.md)」。

### 刪除操作對複寫的影響
<a name="replication-delete-op"></a>

如果您從來源儲存貯體中刪除物件，預設會執行下列動作：
+ 如果您發出 DELETE 請求但未指定物件版本 ID，則 Amazon S3 會新增刪除標記。Amazon S3 會如下處理刪除標記：
  + 如果您使用最新版本的複寫組態 (亦即您在複寫組態規則中指定 `Filter` 元素)，根據預設，Amazon S3 就不會複寫刪除標記。但是，您可以將*刪除標記複寫*新增至非標籤型規則。如需詳細資訊，請參閱[複寫儲存貯體之間的刪除標記](delete-marker-replication.md)。
  + 如果您沒有指定 `Filter` 元素，Amazon S3 會假設複寫組態為版本 V1，並複寫使用者動作產生的刪除標記。但是，如果 Amazon S3 因生命週期動作而刪除物件，則刪除標記不會複寫至目的地儲存貯體。
+ 如果您在 `DELETE` 請求中指定要刪除的物件版本 ID，Amazon S3 會刪除來源儲存貯體中的該物件版本。但不會在目的地儲存貯體中進行刪除。換句話說，Amazon S3 不會從目的地儲存貯體中刪除相同的物件版本。這可防止資料遭到惡意刪除。

## 使用複寫組態不會複寫什麼項目？
<a name="replication-what-is-not-replicated"></a>

依預設，Amazon S3 不會複寫下列項目：
+ 來源儲存貯體中由其他複寫規則所建立的物件複本。例如，若您設定複寫，其中儲存貯體 A 是來源，而儲存貯體 B 是目的地。現在，假設您新增另一個複寫組態，其中儲存貯體 B 是來源，而儲存貯體 C 是目的地。在此情況下，如果儲存貯體 B 中的物件是儲存貯體 A 中的物件複本，則不會複寫至儲存貯體 C。

  若要複寫做為複本的物件，請使用批次複寫。若要進一步了解設定批次複寫，請參閱 [複寫現有物件](s3-batch-replication-batch.md)。
+ 來源儲存貯體中已複寫至不同目的地的物件。例如，如果您變更現有複寫組態中的目的地儲存貯體，Amazon S3 就不會再次將它複寫。

  若要複寫以前複寫過的物件，請使用批次複寫。若要進一步了解設定批次複寫，請參閱 [複寫現有物件](s3-batch-replication-batch.md)。
+ 批次複寫不支援重新複寫具有來自目的地儲存貯體之物件的版本 ID 的已刪除物件。若要重新複寫這些物件，您可以使用批次複製 (Batch Copy) 任務將來源物件複製到位。將這些物件複製到位會在來源儲存貯體中建立物件的新版本，並自動將複寫啟動到目的地。如需有關如何使用批次複製 (Batch Copy) 的詳細資訊，請參閱 [使用批次操作複製物件的範例](batch-ops-examples-copy.md)。
+ 根據預設，從不同的 複寫時 AWS 帳戶，不會複寫新增至來源儲存貯體的刪除標記。

  如需有關如何複寫刪除標記的資訊，請參閱 [複寫儲存貯體之間的刪除標記](delete-marker-replication.md)。
+ 儲存於 S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive、S3 Intelligent-Tiering Archive Access Tier 或 S3 Intelligent-Tiering Deep Archive Access 儲存體方案或層級的物件。您需先還原這些物件並複製到不同的儲存類別，才能複製這些物件。

  若要進一步了解 S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive，請參閱[較少存取物件的儲存類別](storage-class-intro.md#sc-glacier)。

  若要進一步了解 S3 Intelligent-Tiering，請參閱[使用 Amazon S3 Intelligent-Tiering 管理儲存成本](intelligent-tiering.md)。
+ 來源儲存貯體中，儲存貯體擁有者沒有足夠複寫許可的物件。

  如需物件擁有者如何將許可授予儲存貯體擁有者的資訊，請參閱[授予跨帳戶許可，以在確保儲存貯體擁有者具有完全控制時上傳物件](example-bucket-policies.md#example-bucket-policies-acl-2)。
+ 儲存貯體層級子資源的更新。

  例如，如果您變更來源儲存貯體上的生命週期組態，或將通知組態新增至來源儲存貯體，這些變更並不會套用至目的地儲存貯體。此功能可讓來源儲存貯體與目的地儲存貯體的組態不同。
+ 生命週期組態執行的動作。

  例如，如果只啟用來源儲存貯體上的生命週期組態，Amazon S3 會建立過期物件的刪除標記，但不會複寫這些標記。如果您想要將相同的生命週期組態套用至來源與目的地儲存貯體，請在這兩個儲存貯體上啟用相同的生命週期組態。如需生命週期組態的詳細資訊，請參閱「[管理物件的生命週期](object-lifecycle-mgmt.md)」。
+ 當您使用標籤型複寫規則搭配即時複寫時，新物件必須在 `PutObject` 操作中以相符的複寫規則標籤進行標記。否則，系統不會複寫物件。如果在 `PutObject` 操作之後為物件加上標籤，則系統也不會複寫這些物件。

  若要複寫在 `PutObject` 操作之後標記的物件，您必須使用 S3 批次複寫。如需批次複寫的詳細資訊，請參閱 [複寫現有物件](s3-batch-replication-batch.md)。

# 複寫的需求與考量
<a name="replication-requirements"></a>

Amazon S3 複寫需求如下：
+ 來源儲存貯體擁有者必須為其帳戶 AWS 區域 啟用來源和目的地。目的地儲存貯體擁有者必須為該帳戶啟用目的地區域。

  如需啟用或停用 的詳細資訊 AWS 區域，請參閱《 *AWS 帳戶管理 參考指南*》中的[指定 AWS 區域 您的帳戶可以使用哪些](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) 。
+ 來源與目的地儲存貯體都必須啟用版本控制。如需版本控制的詳細資訊，請參閱「[使用 S3 版本控制保留多個版本的物件](Versioning.md)」。
+ Amazon S3 必須具備許可，才能代您將物件從來源儲存貯體複寫至目的地儲存貯體。如需這些許可的詳細資訊，請參閱「[設定即時複寫的許可](setting-repl-config-perm-overview.md)」。
+ 如果來源儲存貯體的擁有者並未擁有儲存貯體中的物件，則物件擁有者必須先使用物件存取控制清單 (ACL)，將 `READ` 和 `READ_ACP` 許可授予儲存貯體擁有者。如需詳細資訊，請參閱「[存取控制清單 (ACL) 概觀](acl-overview.md)」。
+ 如果來源儲存貯體已啟用 S3 物件鎖定，目的地儲存貯體必須也啟用 S3 物件鎖定。

  若要在已啟用物件鎖定的儲存貯體上啟用複寫，您必須使用 AWS Command Line Interface、REST API 或 AWS SDKs。如需一般詳細資訊，請參閱[使用物件鎖定來鎖定物件](object-lock.md)。
**注意**  
您必須在用來設定複寫的 AWS Identity and Access Management (IAM) 角色中，授予來源 S3 儲存貯體的兩個新許可。這兩個新許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可，即滿足要求。如需詳細資訊，請參閱[設定即時複寫的許可](setting-repl-config-perm-overview.md)。

如需詳細資訊，請參閱[設定即時複寫概觀](replication-how-setup.md)。

如果您在「跨帳戶案例」**中設定複寫組態，其中來源與目的地儲存貯體的擁有者是不同的 AWS 帳戶，則適用下列其他需求：
+ 目的地儲存貯體擁有者必須使用儲存貯體原則，來授予來源儲存貯體擁有者複寫物件的許可。如需詳細資訊，請參閱「[（選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶](setting-repl-config-perm-overview.md#setting-repl-config-crossacct)」。
+ 此儲存貯體無法設定為「申請者付款」的儲存貯體。如需詳細資訊，請參閱[使用儲存體傳輸和用量的申請者付款一般用途儲存貯體](RequesterPaysBuckets.md)。

## 複寫的考量
<a name="replication-and-other-bucket-configs"></a>

建立複寫組態之前，請注意下列考量事項。

**Topics**
+ [

### 生命週期組態與物件複本
](#replica-and-lifecycle)
+ [

### 版本控制組態與複寫組態
](#replication-and-versioning)
+ [

### 搭配 S3 Intelligent-Tiering 使用 S3 複寫
](#replication-and-intelligent-tiering)
+ [

### 記錄日誌組態與複寫組態
](#replication-and-logging)
+ [

### CRR 與目的地區域
](#replication-and-dest-region)
+ [

### S3 批次複寫
](#considerations-batch-replication)
+ [

### S3 複寫時間控制
](#considerations-RTC)

### 生命週期組態與物件複本
<a name="replica-and-lifecycle"></a>

Amazon S3 複寫物件所需的時間取決於物件大小。若是大型物件，則可能需要數小時的時間。雖然目的地中的複本在可使用前需要一些時間，但建立複本與在來源儲存貯體中建立相對應物件所需的時間相同。如果目的地儲存貯體上啟用了生命週期組態，生命週期規則即是根據原始物件的建立時間，而不是目的地儲存貯體中的複本成為可用的時間。

複寫組態要求儲存貯體必須已啟用版本控制。當您啟用儲存貯體上的版本控制時，請記住下列事項：
+ 如果您擁有物件過期生命週期組態，在您啟用版本控制之後，請新增 `NonCurrentVersionExpiration` 政策，以保持如啟用版本控制之前的相同永久刪除行為。
+ 如果您擁有轉移生命週期組態，在您啟用版本控制之後，請考慮新增 `NonCurrentVersionTransition` 政策。

### 版本控制組態與複寫組態
<a name="replication-and-versioning"></a>

當您在儲存貯體上設定複寫時，來源與目的地儲存貯體都必須已啟用版本控制。當您同時啟用來源與目的地儲存貯體上的版本控制，並在來源儲存貯體上設定複寫之後，您會遇到下列問題：
+ 如果您嘗試停用來源儲存貯體上的版本控制，Amazon S3 會傳回錯誤。您必須移除複寫組態，才能停用來源儲存貯體上的版本控制。
+ 如果您停用目的地儲存貯體上的版本控制，複寫會失敗。來源物件的複寫狀態為 `FAILED`。

### 搭配 S3 Intelligent-Tiering 使用 S3 複寫
<a name="replication-and-intelligent-tiering"></a>

S3 Intelligent-Tiering 是一種儲存類別，其設計在於自動將資料移至最具成本效益的存取層，藉此最佳化儲存成本。只需每月支付少許的物件監控和自動化費用，S3 Intelligent-Tiering 即可監控存取模式，並自動將未存取的物件移至低成本層。

使用 S3 批次複寫來複寫儲存在 S3 Intelligent-Tiering 中的物件，或是調用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 或 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)，都會構成存取。在這些情況下，複製或複寫操作的來源物件會分層。

如需 S3 Intelligent-Tiering 的詳細資訊，請參閱 [使用 Amazon S3 Intelligent-Tiering 管理儲存成本](intelligent-tiering.md)。

### 記錄日誌組態與複寫組態
<a name="replication-and-logging"></a>

如果 Amazon S3 將日誌提供給已啟用複寫的儲存貯體，即會複寫日誌物件。

如果已啟用來源或目的地儲存貯體上的[伺服器存取日誌](ServerLogs.md)或 [AWS CloudTrail 日誌](cloudtrail-logging.md)，Amazon S3 會在日誌中包含複寫相關請求。例如，Amazon S3 會記錄其所複寫的每個物件。

### CRR 與目的地區域
<a name="replication-and-dest-region"></a>

Amazon S3 跨區域複寫 (CRR) 用於在不同 S3 儲存貯體之間複製物件 AWS 區域。您可以根據商業需求或成本考量來選擇目的地儲存貯體的區域。例如，區域之間的資料傳輸費會依所選區域而異。

假設您選擇美國東部 (維吉尼亞北部) (`us-east-1`) 作為您的來源儲存貯體區域。如果您選擇美國西部 (奧勒岡) (`us-west-2`) 作為目的地儲存貯體區域，您支付的費用會比選擇美國東部 (俄亥俄) (`us-east-2`) 區域更多。如需定價資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)中的「資料傳輸定價」。

相同區域複寫 (SRR) 沒有相關的資料傳輸費。

### S3 批次複寫
<a name="considerations-batch-replication"></a>

如需批次複寫考量的相關資訊，請參閱[S3 批次複寫注意事項](s3-batch-replication-batch.md#batch-replication-considerations)。

### S3 複寫時間控制
<a name="considerations-RTC"></a>

如需有關 S3 複寫時間控制 (S3 RTC) 最佳實務和考量的相關資訊，請參閱[S3 RTC 的最佳實務和指導方針](replication-time-control.md#rtc-best-practices)。

# 設定即時複寫概觀
<a name="replication-how-setup"></a>

**注意**  
您設定複寫之前就已存在的物件不會自動複寫。換句話說，Amazon S3 不會追溯複寫物件。若要複寫在複寫組態之前建立的物件，請使用 S3 批次複寫。如需設定批次複寫的詳細資訊，請參閱[複寫現有物件](s3-batch-replication-batch.md)。

若要啟用即時複寫 (相同區域複寫 (SRR) 或跨區域複寫 (CRR))，請將複寫組態新增至來源儲存貯體。此組態會通知 Amazon S3 依指定方式複寫物件。在複寫組態中，您必須提供以下項目：
+ **目的地儲存貯體** – 您希望 Amazon S3 在其中複寫物件的儲存貯體。
+ **您要複寫的物件** – 您可以複寫來源儲存貯體中的所有物件或物件子集。您可以在組態中提供[金鑰名稱前綴](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#keyprefix)、一或多個物件標籤或兩者，來識別子集。

  例如，如果您將複寫規則設定為僅複寫具有金鑰名稱前綴為 `Tax/` 的物件，則 Amazon S3 會複寫具有 `Tax/doc1` 或 `Tax/doc2` 等金鑰的物件。但不會複寫具有 `Legal/doc3` 金鑰的物件。如果您指定字首以及一或多個標籤，則 Amazon S3 僅會複寫具備特定索引鍵字首和標籤的物件。
+ ** AWS Identity and Access Management (IAM) 角色** – Amazon S3 會擔任此 IAM 角色來代表您複寫物件。如需有關建立 IAM 角色和管理許可的詳細資訊，請參閱[設定即時複寫的許可](setting-repl-config-perm-overview.md)。

除了這些最低需求以外，您可以選擇下列選項：
+ **複本儲存體方案** – 根據預設，Amazon S3 會使用與來源物件相同的儲存體方案來存放物件複本。您可以為複本指定不同的儲存體方案。
+ **複本擁有權** – Amazon S3 會假設物件複本的擁有者持續是來源物件擁有者。所以，當複寫物件時，也會複寫對應的物件存取控制清單 (ACL) 或 S3 物件擁有權設定。如果來源與目的地儲存貯體的擁有者是不同的 AWS 帳戶，您可以設定複寫，以將複本擁有者變更為擁有目標儲存貯體的 AWS 帳戶 。如需詳細資訊，請參閱[變更複本擁有者](replication-change-owner.md)。

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、 AWS SDKs或 Amazon S3 REST API 來設定複寫。如需如何設定複寫的詳細逐步解說，請參閱[設定即時複寫的範例](replication-example-walkthroughs.md)。

 Amazon S3 也提供 REST API 操作來支援設定複寫規則。如需詳細資訊，請參閱 *Amazon Simple Storage Service API 參考*中的下列主題：
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html) 

**Topics**
+ [

# 複寫組態檔案元素
](replication-add-config.md)
+ [

# 設定即時複寫的許可
](setting-repl-config-perm-overview.md)
+ [

# 設定即時複寫的範例
](replication-example-walkthroughs.md)

# 複寫組態檔案元素
<a name="replication-add-config"></a>

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

**注意**  
複寫組態 XML 格式的最新版本為 V2。XML V2 複寫組態是指包含規則 `<Filter>` 元素和指定 S3 複寫時間控制 (S3 RTC) 規則的組態。  
若要查看您的複寫組態版本，您可以使用 `GetBucketReplication` API 操作。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)。  
為提供回溯相容性，Amazon S3 會繼續支援 XML V1 複寫組態格式。如果您已使用 XML V1 複寫組態格式，請參閱[回溯相容性考量](#replication-backward-compat-considerations)以了解回溯相容性考量。

在複寫組態 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 角色。如需如何管理許可的詳細資訊，請參閱 [設定即時複寫的許可](setting-repl-config-perm-overview.md)。

針對下列情況，您只會在複寫組態中新增一個規則：
+ 您想要複寫所有物件。
+ 您想要只複寫一個物件子集。您在規則中新增篩選條件，以識別物件子集。您可以在篩選條件中指定物件金鑰前綴、標籤，或這兩項的組合，以識別要套用規則的物件子集。篩選條件的目標是確切符合您指定值的物件。

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

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

**Topics**
+ [

## 基本規則組態
](#replication-config-min-rule-config)
+ [

## 選用：指定篩選條件
](#replication-config-optional-filter)
+ [

## 其他目標組態
](#replication-config-optional-dest-config)
+ [

## 範例複寫組態
](#replication-config-example-configs)
+ [

## 回溯相容性考量
](#replication-backward-compat-considerations)

## 基本規則組態
<a name="replication-config-min-rule-config"></a>

每個規則都必須包括規則的狀態和優先順序。規則還必須指示是否複寫刪除標記。
+ `<Status>` 元素會指出是使用 `Enabled` 還是 `Disabled` 值來啟用或停用規則。當規則停用時，Amazon S3 即不會執行規則中指定的動作。
+ `<Priority>` 元素會指出當兩個或多個複寫規則發生衝突時，哪些規則具有優先權。Amazon S3 會嘗試根據所有複寫規則來複寫物件。不過，如果有兩個或多個規則具有相同目的地儲存貯體，則會根據具有最高優先順序的規則來複寫物件。數字愈高，優先順序愈高。
+ `<DeleteMarkerReplication>` 元素會使用 `Enabled` 或 `Disabled` 值，指示是否複寫刪除標記。

在 `<Destination>` 元素組態中，您必須提供目的地儲存貯體名稱，或希望 Amazon S3 複寫其中物件的儲存貯體。

以下範例顯示 V2 規則所需的最低需求。為了回溯相容性，Amazon S3 繼續支援 XML V1 格式。如需詳細資訊，請參閱[回溯相容性考量](#replication-backward-compat-considerations)。

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

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

## 選用：指定篩選條件
<a name="replication-config-optional-filter"></a>

若要選擇物件子集以套用規則，請新增選用的篩選條件。您可以依物件索引鍵字首、物件標籤或兩者的組合來進行篩選。如果您依索引鍵字首和物件標籤兩者來篩選，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 批次複寫。如需批次複寫的詳細資訊，請參閱 [複寫現有物件](s3-batch-replication-batch.md)。

## 其他目標組態
<a name="replication-config-optional-dest-config"></a>

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

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

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

**Topics**
+ [

### 指定儲存類別
](#storage-class-configuration)
+ [

### 新增多個目的地儲存貯體
](#multiple-destination-buckets-configuration)
+ [

### 為具有多個目的地儲存貯體的每個複寫規則指定不同的參數
](#replication-rule-configuration)
+ [

### 變更複本擁有權
](#replica-ownership-configuration)
+ [

### 啟用 S3 複寫時間控制
](#rtc-configuration)
+ [

### 使用 複寫使用伺服器端加密建立的物件 AWS KMS
](#sse-kms-configuration)

### 指定儲存類別
<a name="storage-class-configuration"></a>

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

```
...
<Destination>
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
       <StorageClass>storage-class</StorageClass>
</Destination>
...
```

### 新增多個目的地儲存貯體
<a name="multiple-destination-buckets-configuration"></a>

您可以在單一複寫組態中新增多個目的地儲存貯體，如下所示。

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

### 為具有多個目的地儲存貯體的每個複寫規則指定不同的參數
<a name="replication-rule-configuration"></a>

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

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

### 變更複本擁有權
<a name="replica-ownership-configuration"></a>

當來源和目的地儲存貯體不是由相同的帳戶擁有時，您可以將複本的擁有權變更為 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 帳戶 所擁有。如需詳細資訊，請參閱[變更複本擁有者](replication-change-owner.md)。

### 啟用 S3 複寫時間控制
<a name="rtc-configuration"></a>

您可以在複寫組態中啟用 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 複寫時間控制來滿足合規要求](replication-time-control.md)。如需 API 範例，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)。

### 使用 複寫使用伺服器端加密建立的物件 AWS KMS
<a name="sse-kms-configuration"></a>

您的來源儲存貯體可能包含使用 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)](replication-config-for-kms-objects.md)。

## 範例複寫組態
<a name="replication-config-example-configs"></a>

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

**重要**  
若要將複寫組態新增至儲存貯體，您必須具有 `iam:PassRole` 許可。這項許可允許您傳遞授予 Amazon S3 複寫許可的 IAM 角色。您可以提供 Amazon Resource Name (ARN) 以指定 IAM 角色，其用於複寫組態 XML 中的 `<Role>` 元素。如需詳細資訊，請參閱 *IAM 使用者指南*中[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

**Example 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 支援的任何儲存體方案。

**Example 2：具有兩項規則的複寫組態**  

**Example**  
在下列複寫組態中，規則會指定下列項目：  
+ 每個規則會篩選不同的金鑰前綴，每個規則會套用至不同的物件子集。在此例中，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>
```

**Example 3：具有兩項前綴重疊之規則的複寫組態**  <a name="overlap-rule-example"></a>
在此組態中，有兩項規則指定了含 *`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>
```

**Example 4：範例演練**  
如需範例逐步解說，請參閱 [設定即時複寫的範例](replication-example-walkthroughs.md)。

如需有關複寫組態 XML 結構的詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [PutBucketReplication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)。

## 回溯相容性考量
<a name="replication-backward-compat-considerations"></a>

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

若要查看您的複寫組態版本，您可以使用 `GetBucketReplication` API 操作。如需詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)。

為提供回溯相容性，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 格式中，您可以針對非標籤型規則啟用刪除標記複寫。如需詳細資訊，請參閱[複寫儲存貯體之間的刪除標記](delete-marker-replication.md)。

 

# 設定即時複寫的許可
<a name="setting-repl-config-perm-overview"></a>

設定 Amazon S3 中的即時複寫時，您必須用以下方式取得必要的許可：
+ 您必須授予建立複寫規則的 AWS Identity and Access Management (IAM) 委託人 （使用者或角色） 一組特定許可。
+ Amazon S3 需要許可，才能代您複寫物件。您可建立 IAM 角色並在您的複寫組態中指定此角色以授予這些許可。
+ 當來源與目的地儲存貯體的擁有者是不同的帳戶時，目的地儲存貯體的擁有者也必須將存放複本的許可授予來源儲存貯體擁有者。

**注意**  
如果您使用 S3 Batch Operations 隨需複寫物件，而不是設定即時複寫，S3 批次複寫需要不同的 IAM 角色和政策。如需批次複寫 IAM 角色和政策範例，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

**Topics**
+ [

## 步驟 1：將許可權授予建立複寫規則的 IAM 主體
](#setting-repl-config-role)
+ [

## 步驟 2：為 Amazon S3 建立要擔任的 IAM 角色
](#setting-repl-config-same-acctowner)
+ [

## （選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶
](#setting-repl-config-crossacct)
+ [

## (選用) 步驟 4：授予變更複本擁有權的許可
](#change-replica-ownership)

## 步驟 1：將許可權授予建立複寫規則的 IAM 主體
<a name="setting-repl-config-role"></a>

您將用來建立複寫規則的 IAM 使用者或角色需要許可權，才能為單向或雙向複寫建立複寫規則。如果使用者或角色沒有這些許可權，您將無法建立複寫規則。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 識別碼](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

使用者或角色需要下列動作：
+ `iam:AttachRolePolicy`
+ `iam:CreatePolicy`
+ `iam:CreateServiceLinkedRole`
+ `iam:PassRole`
+ `iam:PutRolePolicy`
+ `s3:GetBucketVersioning`
+ `s3:GetObjectVersionAcl`
+ `s3:GetObjectVersionForReplication`
+ `s3:GetReplicationConfiguration`
+ `s3:PutReplicationConfiguration`

以下是包含這些動作的範例 IAM 政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccessPoint",
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets",
                "s3:PutReplicationConfiguration",
                "s3:GetReplicationConfiguration",
                "s3:GetBucketVersioning",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:GetBucketOwnershipControls",
                "s3:PutBucketOwnershipControls",
                "s3:GetObjectLegalHold",
                "s3:GetObjectRetention",
                "s3:GetBucketObjectLockConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1-*",
                "arn:aws:s3:::amzn-s3-demo-bucket2-*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:List*AccessPoint*",
                "s3:GetMultiRegion*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:CreateServiceLinkedRole",
                "iam:CreateRole",
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::*:role/service-role/s3*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:List*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "iam:CreatePolicy"
              ],
            "Resource": [
                "arn:aws:iam::*:policy/service-role/s3*",
                "arn:aws:iam::*:role/service-role/s3*"
            ]
        }
    ]
}
```

------

## 步驟 2：為 Amazon S3 建立要擔任的 IAM 角色
<a name="setting-repl-config-same-acctowner"></a>



根據預設，所有 Amazon S3 資源 (儲存貯體、物件與相關子資源) 皆為私有，且只有資源擁有者才可存取該資源。Amazon S3 需要從來源儲存貯體讀取和複寫物件的許可。您可建立 IAM 角色並在您的複寫組態中指定該角色，以授予這些許可。

本節說明附加至此 IAM 角色的信任政策與最低必要許可政策。這些範例演練提供建立 IAM 角色的逐步說明。如需詳細資訊，請參閱[設定即時複寫的範例](replication-example-walkthroughs.md)。

**注意**  
如果您使用主控台建立複寫組態，建議您略過本節，改為讓主控台為您建立此 IAM 角色和必要的信任和許可政策。

*信任政策*會識別哪些主體身分可以擔任 IAM 角色。*許可政策*會指定 IAM 角色可以在哪些條件下對哪些資源執行的動作。
+ 下列範例顯示*信任政策*，其中您將 Amazon S3 識別為可擔任該角色的 AWS 服務 委託人：

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Principal":{
              "Service":"s3.amazonaws.com"
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------
+ 以下範例顯示*信任政策*，您可以在其中將 Amazon S3 和 S3 批次操作識別為可擔任該角色的服務主體。如果您要建立批次複寫任務，請使用此操作。如需詳細資訊，請參閱[為新複寫規則或目的地建立批次複寫任務](s3-batch-replication-new-config.md)。

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[ 
        {
           "Effect":"Allow",
           "Principal":{
              "Service": [
                "s3.amazonaws.com",
                "batchoperations.s3.amazonaws.com"
             ]
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------

  如需 IAM 角色的詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。
+ 下列範例顯示*許可政策*，您可以在其中授予 IAM 角色許可來代您執行複寫作業。當 Amazon S3 擔任該角色時，即具備您在此政策中指定的許可。在這項政策中，`amzn-s3-demo-source-bucket` 是來源儲存貯體，`amzn-s3-demo-destination-bucket` 是目的地儲存貯體。

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
        {
           "Effect": "Allow",
           "Action": [
              "s3:GetReplicationConfiguration",
              "s3:ListBucket"
           ],
           "Resource": [
              "arn:aws:s3:::amzn-s3-demo-source-bucket"
           ]
        },
        {
           "Effect": "Allow",
           "Action": [
              "s3:GetObjectVersionForReplication",
              "s3:GetObjectVersionAcl",
              "s3:GetObjectVersionTagging"
           ],
           "Resource": [
              "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           ]
        },
        {
           "Effect": "Allow",
           "Action": [
              "s3:ReplicateObject",
              "s3:ReplicateDelete",
              "s3:ReplicateTags"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        }
     ]
  }
  ```

------

  許可政策會授予執行下列動作的許可：
  +  `s3:GetReplicationConfiguration` 和 `s3:ListBucket` – 針對 `amzn-s3-demo-source-bucket` 儲存貯體的這些動作的許可，允許 Amazon S3 擷取複寫組態並列出儲存貯體內容。(目前的許可模型需要 `s3:ListBucket` 許可以存取刪除標記。)
  + `s3:GetObjectVersionForReplication` 與 `s3:GetObjectVersionAcl` – 所有物件上授予的這些動作許可，其允許 Amazon S3 取得特定物件版本以及與物件相關聯的存取控制清單 (ACL)。

    
  + `s3:ReplicateObject` 與 `s3:ReplicateDelete` – `amzn-s3-demo-destination-bucket` 儲存貯體的所有物件上這些動作的許可，其允許 Amazon S3 將物件或刪除標記複寫至目的地儲存貯體。如需刪除標記的資訊，請參閱 [刪除操作對複寫的影響](replication-what-is-isnot-replicated.md#replication-delete-op)。
**注意**  
`amzn-s3-demo-destination-bucket` 儲存貯體上 `s3:ReplicateObject` 動作的許可也允許複寫物件標籤和 ACL 等中繼資料。因此，您不需要明確授予 `s3:ReplicateTags` 動作的許可。
  + `s3:GetObjectVersionTagging` – 針對 `amzn-s3-demo-source-bucket` 儲存貯體內物件之這項動作的許可，可讓 Amazon S3 讀取要複寫的物件標籤。如需物件標籤的詳細資訊，請參閱 [使用標籤為物件分類](object-tagging.md)。如果 Amazon S3 不具備 `s3:GetObjectVersionTagging` 許可，則會複寫物件，但不會複寫物件標籤。

  如需 Amazon S3 動作清單，請參閱服務授權參考**中的[適用於 Amazon S3 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#list_amazons3-actions-as-permissions)。

  如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。
**重要**  
 AWS 帳戶 擁有 IAM 角色的 必須具有授予 IAM 角色之動作的許可。  
例如，假設來源儲存貯體包含另一個 AWS 帳戶所擁有的物件。物件的擁有者必須透過物件的存取控制清單 (ACLs)，明確授予 AWS 帳戶 擁有 IAM 角色的必要許可。否則，Amazon S3 就無法存取這些物件，而導致物件的複寫失敗。如需 ACL 許可的資訊，請參閱「[存取控制清單 (ACL) 概觀](acl-overview.md)」。  
  
此處描述的許可與基本複寫組態相關。如果您選擇新增額外的複寫組態，則必須將額外許可權授予 Amazon S3。  
若要複寫加密物件，您也需要授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

## （選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶
<a name="setting-repl-config-crossacct"></a>

當來源與目的地儲存貯體的擁有者是不同的帳戶時，目的地儲存貯體的擁有者也必須新增儲存貯體政策，以將執行複寫動作的許可授予來源儲存貯體擁有者，如下列範例所示。在此政策範例中，`amzn-s3-demo-destination-bucket` 是目的地儲存貯體。

您也可以使用 Amazon S3 主控台自動為您產生此儲存貯體政策。如需詳細資訊，請參閱[允許從來源儲存貯體接收所複寫物件](#receiving-replicated-objects)。

**注意**  
角色的 ARN 格式出現時可能會有所不同。如果使用主控台建立角色，ARN 格式為 `arn:aws:iam::account-ID:role/service-role/role-name`。如果角色是使用 建立的 AWS CLI，則 ARN 格式為 `arn:aws:iam::account-ID:role/role-name`。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForDestinationBucket",
    "Statement": [
        {
            "Sid": "Permissions on objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3:ReplicateDelete",
                "s3:ReplicateObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        },
        {
            "Sid": "Permissions on bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3:List*",
                "s3:GetBucketVersioning",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
        }
    ]
}
```

------

如需範例，請參閱 [設定不同帳戶內的儲存貯體複寫](replication-walkthrough-2.md)。

如果來源儲存貯體中的物件已標記，請注意下列情況：
+ 如果來源儲存貯體擁有者將 `s3:GetObjectVersionTagging` 與 `s3:ReplicateTags` 動作的許可授予 Amazon S3 來複寫物件標籤 (透過 IAM 角色)，Amazon S3 會連同物件一起複寫標籤。如需 IAM 角色的資訊，請參閱 [步驟 2：為 Amazon S3 建立要擔任的 IAM 角色](#setting-repl-config-same-acctowner)。
+ 如果目的地儲存貯體擁有者不想要複寫標籤，擁有者可以將下列陳述式新增至目的地儲存貯體政策，以明確拒絕 `s3:ReplicateTags` 動作的許可。在此政策中，`amzn-s3-demo-destination-bucket` 是目的地儲存貯體。

  ```
  ...
     "Statement":[
        {
           "Effect":"Deny",
           "Principal":{
              "AWS":"arn:aws:iam::source-bucket-account-id:role/service-role/source-account-IAM-role"
           },
           "Action":"s3:ReplicateTags",
           "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        }
     ]
  ...
  ```

**注意**  
如果您想要複寫加密的物件，您還必須授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

**允許從來源儲存貯體接收複寫的物件**  
您可以快速產生所需的政策，以透過 Amazon S3 主控台從來源儲存貯體接收複寫物件，而不是手動將上述政策新增至目的地儲存貯體。

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在 **Buckets (儲存貯體)** 清單中，選擇您要作為目的地儲存貯體的儲存貯體。

1. 選擇 **Management (管理)** 標籤，然後向下捲動至 **Replication rules (複寫規則)**。

1. 針對 **Actions (動作)**，選擇 **Receive replicated objects (接收複寫物件)**。

   遵循提示並輸入來源儲存貯體帳戶的 AWS 帳戶 ID，然後選擇**產生政策**。主控台隨即產生 Amazon S3 儲存貯體政策和 KMS 金鑰政策。

1. 若要將此政策新增到現有儲存貯體政策，請選擇 **Apply settings (套用設定)**，或選擇 **Copy (複製)** 手動複製變更。

1. （選用） 在主控台中將 AWS KMS 政策複製到您想要的 AWS Key Management Service KMS 金鑰政策。

## (選用) 步驟 4：授予變更複本擁有權的許可
<a name="change-replica-ownership"></a>

當不同的 AWS 帳戶 擁有來源和目的地儲存貯體時，您可以指示 Amazon S3 將複本的擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。若要覆寫複本的擁有權，您必須授予一些額外的許可，或調整目的地儲存貯體的 S3 物件擁有權設定。如需擁有者覆寫的詳細資訊，請參閱 [變更複本擁有者](replication-change-owner.md)。

# 設定即時複寫的範例
<a name="replication-example-walkthroughs"></a>

下列範例提供逐步演練，顯示如何設定常用案例的即時複寫。

**注意**  
即時複寫是指相同區域複寫 (SRR) 和跨區域複寫 (CRR)。在您設定複寫之前，即時複寫不會複寫儲存貯體中存在的任何物件。若要複寫在設定複寫之前已存在的物件，請使用隨需複寫。若要同步儲存貯體並隨需複寫現有物件，請參閱[複寫現有物件](s3-batch-replication-batch.md)。

這些範例示範如何使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 和 AWS SDKs（顯示適用於 Java 的 AWS SDK 和 適用於 .NET 的 AWS SDK 範例） 建立複寫組態。

如需有關安裝和設定 的資訊 AWS CLI，請參閱*AWS Command Line Interface 《 使用者指南*》中的下列主題：
+  [開始使用 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 
+  [設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)- 您必須設定至少一個設定檔。如果您要探索跨帳戶案例，請設定兩個描述檔。

如需 AWS SDKs的相關資訊，請參閱 [適用於 Java 的 AWS SDK](https://aws.amazon.com/sdk-for-java/)和 [適用於 .NET 的 AWS SDK](https://aws.amazon.com/sdk-for-net/)。

**提示**  
如需示範如何使用即時複寫來複寫資料的step-by-step教學課程，請參閱[教學課程： AWS 區域 使用 S3 複寫在內部和之間複寫資料](https://aws.amazon.com/getting-started/hands-on/replicate-data-using-amazon-s3-replication/?ref=docs_gateway/amazons3/replication-example-walkthroughs.html)。

**Topics**
+ [設定相同帳戶內的儲存貯體](replication-walkthrough1.md)
+ [設定不同帳戶內的儲存貯體](replication-walkthrough-2.md)
+ [使用 S3 複寫時間控制](replication-time-control.md)
+ [複寫加密的物件](replication-config-for-kms-objects.md)
+ [複寫中繼資料變更](replication-for-metadata-changes.md)
+ [複寫刪除標記](delete-marker-replication.md)

# 設定相同帳戶內的儲存貯體複寫
<a name="replication-walkthrough1"></a>

即時複寫是在相同或不同的一般用途儲存貯體之間自動非同步複製物件 AWS 區域。即時複寫會將來源儲存貯體中新建立的物件和物件更新複製至目的地儲存貯體。如需詳細資訊，請參閱[複寫區域內和跨區域的物件](replication.md)。

設定複寫時，會將複寫規則新增至來源儲存貯體。複寫規則會定義要複寫的來源儲存貯體物件，以及存放已複寫物件的目的地儲存貯體。您可以建立規則，以特定的金鑰名稱前綴、一或多個物件標籤、或兩種都用，複寫儲存貯體中的所有物件，或一部分的物件。目的地儲存貯體可以 AWS 帳戶 與來源儲存貯體位於相同的 ，也可以位於不同的 帳戶中。

如果您指定要刪除的物件版本 ID，Amazon S3 會刪除來源儲存貯體中的該物件版本。但不會在目的地儲存貯體中進行刪除。換句話說，它不會從目的地儲存貯體中刪除相同的物件版本。這可防止資料遭到惡意刪除。

當您將複寫規則新增至儲存貯體時，預設會啟用此規則，讓它在您儲存它之後立即運作。

在此範例中，您會設定來源與目的地儲存貯體為同一 AWS 帳戶所擁有的即時複寫。提供使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 和 適用於 Java 的 AWS SDK 的範例 適用於 .NET 的 AWS SDK。

## 先決條件
<a name="replication-prerequisites"></a>

使用下列程序之前，請確定您已設定複寫的必要許可權，這取決於來源和目的地儲存貯體是否屬於相同或不同的帳戶。如需詳細資訊，請參閱[設定即時複寫的許可](setting-repl-config-perm-overview.md)。

**注意**  
如果您想要複寫加密的物件，您還必須授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

## 使用 S3 主控台
<a name="enable-replication"></a>

若要在目的地儲存貯體與 AWS 帳戶 來源儲存貯體位於相同 時設定複寫規則，請遵循下列步驟。

如果目的地儲存貯體位在與來源儲存貯體不同的帳戶中，您必須將儲存貯體政策新增至目的地儲存貯體，以將複寫目的地儲存貯體中物件的許可授予來源儲存貯體帳戶擁有者。如需詳細資訊，請參閱[（選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶](setting-repl-config-perm-overview.md#setting-repl-config-crossacct)。

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在儲存貯體清單中，選擇您所需的儲存貯體名稱。

1. 選擇**管理**標籤，向下捲動至**複寫規則**，然後選擇**建立複寫規則**。

    

1. 在**複寫規則設定**區段的**複寫規則名稱**下，輸入規則名稱，以便之後識別規則。此名稱為必要，且在儲存貯體內必須是唯一的。

1. 在 **Status (狀態)** 下，預設會選取 **Enabled (已啟用)**。已啟用規則在您儲存它之後就會立即運作。如果希望稍後再啟用此規則，請選擇**已停用**。

1. 如果儲存貯體有現存的複寫規則，系統會指示您設定規則的優先順序。您必須設定規則優先順序，以免多項規則範圍內的物件引發衝突。如果發生規則重疊的情況，Amazon S3 會使用規則優先順序來判斷要套用哪一個規則。數字愈高，優先順序愈高。如需有關規則優先順序的詳細資訊，請參閱 [複寫組態檔案元素](replication-add-config.md)。

1. 在**來源儲存貯體**之下，您有下列選項可用來設定複寫來源：
   + 若要複寫整個儲存貯體，請選擇 **Apply to all objects in the bucket** (套用至儲存貯體中的所有物件)。
   + 若要複寫具有相同字首的所有物件，請選擇**Limit the scope of this rule using one or more filters** (使用一或多個篩選器限制此規則的範圍)。這會將複寫限制為具有以您指定字首開頭的所有物件 (例如 `pictures`) 名稱。在**字首**方塊中輸入字首。
**注意**  
如果您輸入的字首是資料夾名稱，最後一個字元必須使用 **/** (正斜線) (例如，`pictures/`)。
   + 若要複寫具有一個或多個物件標籤的所有物件，請選擇**新增標籤**，然後在方塊中輸入關鍵值比對。重複此過程，添加另一個標籤。您可以合併字首與標籤。如需物件標籤的詳細資訊，請參閱 [使用標籤為物件分類](object-tagging.md)。

   新的複寫組態 XML 結構描述支援字首和標籤篩選條件以及規則的優先順序。如需有關新結構描述的資訊，請參閱 [回溯相容性考量](replication-add-config.md#replication-backward-compat-considerations)。如需與在使用者介面後工作之 Amazon S3 API 搭配使用的 XML 的相關資訊，請參閱 [複寫組態檔案元素](replication-add-config.md)。新的結構描述會被描述為*複寫組態 XML V2*。

1. 在**目的地**下，選擇要 Amazon S3 複寫物件的儲存貯體。
**注意**  
目的地儲存貯體的數量僅限於指定分割區 AWS 區域 中的 數量。分割區是 Regions 的群組。 AWS 目前有三個分割區： `aws`（標準區域）、 `aws-cn`（中國區域） 和 `aws-us-gov`(AWS GovCloud (US) 區域）。您可以使用[服務配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)來要求增加目的地儲存貯體配額。
   + 若要複寫到帳戶中的儲存貯體，請選擇**選擇此帳戶中的儲存貯體**，然後輸入或瀏覽目的地儲存貯體名稱。
   + 若要複寫至不同儲存貯體或儲存貯體 AWS 帳戶，請選擇在**另一個帳戶中指定儲存貯體**，然後輸入目的地儲存貯體帳戶 ID 和儲存貯體名稱。

     如果目的地儲存貯體位在與來源儲存貯體不同的帳戶中，您必須將儲存貯體原則新增至目的地儲存貯體，以將複寫物件的許可授予來源儲存貯體帳戶擁有者。如需詳細資訊，請參閱[（選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶](setting-repl-config-perm-overview.md#setting-repl-config-crossacct)。

     或者，如果您想要啟用協助標準化目的地儲存貯體中新物件的擁有權，請選擇**將物件擁有權變更為目的地儲存貯體擁有者**。如需有關此選項的詳細資訊，請參閱 [控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。
**注意**  
如果未在目的地儲存貯體上啟用版本控制，您會收到包含**啟用版本控制**按鈕的警告訊息。選擇此按鈕，以在儲存貯體上啟用版本控制。

1. 設定 AWS Identity and Access Management (IAM) 角色，Amazon S3 可擔任該角色來代表您複寫物件。

   若要設定 IAM 角色，請在 **IAM 角色**區段中，從 **IAM 角色**下拉式清單選取下列其中一項：
   + 強烈建議您選擇**建立新角色**，讓 Amazon S3 為您建立新 IAM 角色。當您儲存規則時，系統會為符合所選擇來源與目的地儲存貯體的 IAM 角色產生新原則。
   + 您可以選擇使用現有 IAM 角色。如果這麼做，則必須選擇將必要複寫許可授予 Amazon S3 的角色。如果此角色未將遵循您複寫規則的足夠許可授予 Amazon S3，則複寫會失敗。
**重要**  
當您新增複寫規則至儲存貯體時，必須擁有 `iam:PassRole` 許可，方能透過 IAM 角色授予 Amazon S3 複寫許可。如需詳細資訊，請參閱《IAM 使用者指南》**中[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

1. 若要複寫來源儲存貯體中以伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 加密的物件，請選取**加密**下的**複寫物件 AWS KMS**。在**用於加密目的地物件的AWS KMS 金鑰**下，是您允許複寫使用的來源金鑰。根據預設，會包含所有來源 KMS 金鑰。您可以選擇別名或 ID，縮小 KMS 金鑰的選取範圍。

   您未選取之 加密 AWS KMS keys 的物件不會複寫。系統會為您選擇一個 KMS 金鑰或一組 KMS 金鑰，但您也可以自行選擇 KMS 金鑰。如需 AWS KMS 搭配複寫使用 的詳細資訊，請參閱 [複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
**重要**  
當您複寫使用 加密的物件時 AWS KMS， AWS KMS 請求率會在來源區域中加倍，並在目的地區域中增加相同的數量。這些增加的呼叫率 AWS KMS 是由於使用您為複寫目的地區域定義的 KMS 金鑰重新加密資料的方式。 AWS KMS 具有每個區域每個呼叫帳戶的請求率配額。如需配額預設值的資訊，請參閱《AWS Key Management Service 開發人員指南》**中的 [AWS KMS 配額 – 每秒請求數：各有不同](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second)。  
如果您目前的 Amazon S3 `PUT` 物件請求速率在複寫期間超過您帳戶的預設 AWS KMS 速率限制的一半，我們建議您請求提高 AWS KMS 請求速率配額。若要請求提高，請在 支援 中心的[聯絡我們](https://aws.amazon.com/contact-us/)中內建立案例。例如，假設您目前的`PUT`物件請求率為每秒 1，000 個請求，而您使用 AWS KMS 來加密物件。在此情況下，建議您 支援 要求在來源和目的地區域 （如果不同） 中，將 AWS KMS 速率限制提高到每秒 2，500 個請求，以確保沒有調節 AWS KMS。  
若要在來源儲存貯體中查看 `PUT` 物件請求率，請在 Amazon S3 的 Amazon CloudWatch 請求指標中檢視 `PutRequests`。如需檢視 CloudWatch 指標的相關資訊，請參閱[使用 S3 主控台](configure-request-metrics-bucket.md#configure-metrics)。

   如果您選擇複寫使用 加密的物件 AWS KMS，請執行下列動作：

   1. 在**用於加密目的地物件的AWS KMS key ** 下，使用下列其中一種方式指定 KMS 金鑰：
     + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從 AWS KMS keys中選擇**，然後從可用金鑰清單中選擇您的 **KMS 金鑰**。

        AWS 受管金鑰 (`aws/s3`) 和您的客戶受管金鑰都會顯示在此清單中。如需詳細了解客戶受管金鑰，請參閱《AWS Key Management Service 開發人員指南》**中的[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
     + 若要輸入 KMS 金鑰 Amazon Resource Name (ARN)，請選擇**輸入 AWS KMS key ARN**，然後在出現的欄位中輸入您的 KMS 金鑰 ARN。此動作會加密目的地儲存貯體中的複本。您可以在 [IAM 主控台](https://console.aws.amazon.com/iam/)的**加密金鑰**下方找到 KMS 金鑰的 ARN。
     + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

       如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
您只能使用 AWS 區域 在與儲存貯體相同的 中啟用的 KMS 金鑰。如果選擇的是**從您的 KMS 金鑰選擇**，則 S3 主控台只會列出每個區域的其中 100 個 KMS 金鑰。如果您在相同區域中有超過 100 個 KMS 金鑰，您只能看到 S3 主控台中的前 100 個 KMS 金鑰。若要使用主控台中未列出的 KMS 金鑰，請選擇**輸入 AWS KMS key ARN**，然後輸入 KMS 金鑰 ARN。  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

     如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。如需 AWS KMS 搭配 Amazon S3 使用 的詳細資訊，請參閱 [搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)](UsingKMSEncryption.md)。

1. 在**目的地儲存方案**之下,若要將資料複寫至目的地中的特定儲存方案，請選取**變更已複寫物件的儲存方案**。然後選擇您要用於目的地中已複寫物件的儲存體方案。如果您未選擇此選項，則已複寫物件的儲存體方案會與原始物件的類別相同。

1. 設定**其他複寫選項**時，您具有下列其他選項：
   + 如果您想要在複製組態中啟用 S3 複寫時間控制 (S3 RTC)，請選取 **複製時間控制**。如需有關此選項的詳細資訊，請參閱 [使用 S3 複寫時間控制來滿足合規要求](replication-time-control.md)。
   + 如果您想要在複寫組態中啟用 S3 複寫指標，請選取 **Replication metrics and events** (複寫指標和事件)。如需詳細資訊，請參閱[使用指標、事件通知和狀態監控複寫](replication-metrics.md)。
   + 如果您想要在複寫組態中啟用刪除標記複寫，請選取 **Delete marker replication** (刪除標記複寫)。如需詳細資訊，請參閱[複寫儲存貯體之間的刪除標記](delete-marker-replication.md)。
   + 如果您想要在複寫組態中啟用 Amazon S3 複本修改同步，請選取 **Replica modification sync** (複本修改同步)。如需詳細資訊，請參閱[使用複本修改同步來複寫中繼資料變更](replication-for-metadata-changes.md)。
**注意**  
當您使用 S3 RTC 或 S3 複寫指標時，需支付額外費用。

1. 若要完成，請選擇 **Save** (儲存)。

1. 儲存規則之後，您可以選取規則並選擇編輯規則來**編輯、啟用、停用或刪除規則**。

## 使用 AWS CLI
<a name="replication-ex1-cli"></a>

若要在來源和目的地儲存貯體由相同 擁有時使用 AWS CLI 設定複寫 AWS 帳戶，請執行下列動作：
+ 建立來源與目的地儲存貯體。
+ 在儲存貯體上啟用版本控制。
+ 建立 AWS Identity and Access Management (IAM) 角色，授予 Amazon S3 複寫物件的許可。
+ 將複寫組態新增至來源儲存貯體。

您可以測試以驗證設定。

**在來源和目的地儲存貯體由相同 擁有時設定複寫 AWS 帳戶**

1. 設定 AWS CLI的憑證描述檔。此範例使用描述檔名稱 `acctA`。如需設定憑證設定檔和使用具名設定檔的相關資訊，請參閱《AWS Command Line Interface 使用者指南》**中的[組態和憑證檔案設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。
**重要**  
用於此範例的設定檔必須有必要的許可。例如，您可以在複寫組態中指定 Amazon S3 可以擔任的 IAM 角色。只有當您所用的設定檔有 `iam:PassRole` 許可時，才可執行此作業。如需詳細資訊，請參閱《IAM 使用者指南》**中[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。如果您使用管理員憑證建立具名描述檔，即可執行所有任務。

1. 使用下列 AWS CLI 命令建立來源儲存貯體，並在其上啟用版本控制。若要使用這些命令，請以您自己的資訊取代 *`user input placeholders`*。

   下列 `create-bucket` 命令會在美國東部 (維吉尼亞北部) (`us-east-1`) 區域中建立名為 `amzn-s3-demo-source-bucket` 的來源儲存貯體。

   

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   下列 `put-bucket-versioning` 命令會啟用 `amzn-s3-demo-source-bucket` 儲存貯體上的 S3 版本控制。

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 使用以下 AWS CLI 命令建立目的地儲存貯體並啟用其版本控制。若要使用這些命令，請以您自己的資訊取代 *`user input placeholders`*。
**注意**  
若要在來源和目的地儲存貯體都相同時設定複寫組態 AWS 帳戶，請針對來源和目的地儲存貯體使用相同的設定檔。此範例使用 `acctA`。  
若要在儲存貯體由不同 擁有時測試複寫組態 AWS 帳戶，請為每個帳戶指定不同的設定檔。例如，針對目的地儲存貯體使用 `acctB` 設定檔。

   

   下列 `create-bucket` 命令會在美國西部 (奧勒岡) (`us-west-2`) 區域中建立名為 `amzn-s3-demo-destination-bucket` 的目的地儲存貯體。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctA
   ```

   下列 `put-bucket-versioning` 命令會啟用 `amzn-s3-demo-destination-bucket` 儲存貯體上的 S3 版本控制。

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 建立 IAM 角色。您可以在複寫組態中指定稍後要新增至 *source* 儲存貯體的角色，Amazon S3 就會擔任此角色以代您複寫物件。建立 IAM 角色需要兩個步驟：
   + 建立角色。
   + 將許可政策連接到角色。

   1. 建立 IAM 角色。

      1. 複製下列信任政策，並將它儲存至本機電腦目前目錄下名稱為 `s3-role-trust-policy.json` 的檔案中。此政策會授予 Amazon S3 服務主體擔任該角色的許可。

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. 執行下列命令以建立角色。

         ```
         $ aws iam create-role \
         --role-name replicationRole \
         --assume-role-policy-document file://s3-role-trust-policy.json  \
         --profile acctA
         ```

   1. 將許可政策連接到角色。

      1. 複製下列許可政策，並將它儲存至本機電腦目前目錄中名為 `s3-role-permissions-policy.json` 的檔案。此政策會授予各種 Amazon S3 儲存貯體與物件動作的許可。

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl",
                     "s3:GetObjectVersionTagging"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ListBucket",
                     "s3:GetReplicationConfiguration"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ReplicateObject",
                     "s3:ReplicateDelete",
                     "s3:ReplicateTags"
                  ],
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               }
            ]
         }
         ```

------
**注意**  
如果您想要複寫加密的物件，您還必須授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

      1. 執行下列命令以建立政策，並將它連接至角色。以您自己的資訊取代 *`user input placeholders`*。

         ```
         $ aws iam put-role-policy \
         --role-name replicationRole \
         --policy-document file://s3-role-permissions-policy.json \
         --policy-name replicationRolePolicy \
         --profile acctA
         ```

1. 將複寫組態新增至來源儲存貯體。

   1. 雖然 Amazon S3 API 需要您將複寫組態指定為 XML，但 AWS CLI 需要您將複寫組態指定為 JSON。將下列 JSON 儲存至您電腦本機目錄下的 `replication.json` 檔案中。

      ```
      {
        "Role": "IAM-role-ARN",
        "Rules": [
          {
            "Status": "Enabled",
            "Priority": 1,
            "DeleteMarkerReplication": { "Status": "Disabled" },
            "Filter" : { "Prefix": "Tax"},
            "Destination": {
              "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            }
          }
        ]
      }
      ```

   1. 使用您自己的資訊取代 `amzn-s3-demo-destination-bucket` 和 `IAM-role-ARN` 的值，以更新 JSON。儲存變更。

   1. 執行下列 `put-bucket-replication` 命令，將複寫組態新增至您的來源儲存貯體。請務必提供來源儲存貯體名稱：

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

   若要擷取複寫組態，請使用 `get-bucket-replication` 命令。

   ```
   $ aws s3api get-bucket-replication \
   --bucket amzn-s3-demo-source-bucket \
   --profile acctA
   ```

1. 執行下列步驟，在 Amazon S3 主控台中測試設定：

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

   1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。在**一般用途儲存貯體**清單中，選擇來源儲存貯體。

   1. 在來源儲存貯體中，建立名為 `Tax` 的資料夾。

   1. 將範例物件新增至來源儲存貯體的 `Tax` 資料夾。
**注意**  
Amazon S3 複寫物件所需的時間長短，取決於物件大小。如需如何查看複寫狀態的相關資訊，請參閱 [取得複寫狀態資訊](replication-status.md)。

      在 *destination* 儲存貯體中驗證下列事項：
      + Amazon S3 已複寫物件。
      + 該物件是複本。在物件的**屬性**索引標籤上，向下捲動至**物件管理概觀**區段。在**管理組態**下，請參閱**複寫狀態**下的值。請確保將此值設定為 `REPLICA`。
      + 複本由來源儲存貯體帳戶擁有。您可以在物件的**許可**索引標籤上驗證物件擁有權。

        如果來源和目的地儲存貯體由不同帳戶所擁有時，您可以新增選用組態，指示 Amazon S3 將複本擁有權變更為目的地帳戶。如需範例，請參閱 [如何變更複本擁有者](replication-change-owner.md#replication-walkthrough-3)。

## 使用 AWS SDKs
<a name="replication-ex1-sdk"></a>

使用以下程式碼範例，分別使用 適用於 Java 的 AWS SDK 和 將複寫組態新增至儲存貯體 適用於 .NET 的 AWS SDK。

**注意**  
如果您想要複寫加密的物件，您還必須授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

------
#### [ Java ]

若要將複寫組態新增至儲存貯體，然後使用適用於 Java 的 AWS SDK 擷取和驗證組態，您可以使用 S3Client 以程式設計方式管理複寫設定。

如需如何使用適用於 Java 的 AWS SDK 設定複寫的範例，請參閱《*Amazon S3 API 參考*》中的在[儲存貯體上設定複寫組態](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutBucketReplication_section.html)。

------
#### [ C\$1 ]

下列 適用於 .NET 的 AWS SDK 程式碼範例會將複寫組態新增至儲存貯體，然後擷取它。若要使用此程式碼，請提供儲存貯體的名稱和 IAM 角色的 Amazon Resource Name (ARN)。如需設定和執行程式碼範例的資訊，請參閱《適用於 .NET 的 AWS SDK 開發人員指南》**中的 [適用於 .NET 的 AWS SDK入門](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config.html)。

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class CrossRegionReplicationTest
    {
        private const string sourceBucket = "*** source bucket ***";
        // Bucket ARN example - arn:aws:s3:::destinationbucket
        private const string destinationBucketArn = "*** destination bucket ARN ***";
        private const string roleArn = "*** IAM Role ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint sourceBucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;
        public static void Main()
        {
            s3Client = new AmazonS3Client(sourceBucketRegion);
            EnableReplicationAsync().Wait();
        }
        static async Task EnableReplicationAsync()
        {
            try
            {
                ReplicationConfiguration replConfig = new ReplicationConfiguration
                {
                    Role = roleArn,
                    Rules =
                        {
                            new ReplicationRule
                            {
                                Prefix = "Tax",
                                Status = ReplicationRuleStatus.Enabled,
                                Destination = new ReplicationDestination
                                {
                                    BucketArn = destinationBucketArn
                                }
                            }
                        }
                };

                PutBucketReplicationRequest putRequest = new PutBucketReplicationRequest
                {
                    BucketName = sourceBucket,
                    Configuration = replConfig
                };

                PutBucketReplicationResponse putResponse = await s3Client.PutBucketReplicationAsync(putRequest);

                // Verify configuration by retrieving it.
                await RetrieveReplicationConfigurationAsync(s3Client);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
        private static async Task RetrieveReplicationConfigurationAsync(IAmazonS3 client)
        {
            // Retrieve the configuration.
            GetBucketReplicationRequest getRequest = new GetBucketReplicationRequest
            {
                BucketName = sourceBucket
            };
            GetBucketReplicationResponse getResponse = await client.GetBucketReplicationAsync(getRequest);
            // Print.
            Console.WriteLine("Printing replication configuration information...");
            Console.WriteLine("Role ARN: {0}", getResponse.Configuration.Role);
            foreach (var rule in getResponse.Configuration.Rules)
            {
                Console.WriteLine("ID: {0}", rule.Id);
                Console.WriteLine("Prefix: {0}", rule.Prefix);
                Console.WriteLine("Status: {0}", rule.Status);
            }
        }
    }
}
```

------

# 設定不同帳戶內的儲存貯體複寫
<a name="replication-walkthrough-2"></a>

即時複寫是在相同或不同的儲存貯體之間自動非同步複製物件 AWS 區域。即時複寫會將來源儲存貯體中新建立的物件和物件更新複製至目的地儲存貯體。如需詳細資訊，請參閱[複寫區域內和跨區域的物件](replication.md)。

設定複寫時，會將複寫規則新增至來源儲存貯體。複寫規則會定義要複寫的來源儲存貯體物件，以及存放已複寫物件的目的地儲存貯體。您可以建立規則，以特定的金鑰名稱前綴、一或多個物件標籤、或兩種都用，複寫儲存貯體中的所有物件，或一部分的物件。目的地儲存貯體可以 AWS 帳戶 與來源儲存貯體位於相同的 ，也可以位於不同的 帳戶中。

如果您指定要刪除的物件版本 ID，Amazon S3 會刪除來源儲存貯體中的該物件版本。但不會在目的地儲存貯體中進行刪除。換句話說，它不會從目的地儲存貯體中刪除相同的物件版本。這可防止資料遭到惡意刪除。

當您將複寫規則新增至儲存貯體時，預設會啟用此規則，讓它在您儲存它之後立即運作。

在來源和目的地儲存貯體分屬不同 AWS 帳戶 時的即時複寫設定，與兩個儲存貯體同屬於相同帳戶時的複寫設定類似。不過，當您在跨帳戶案例中設定複寫時，會出現幾個不同之處：
+ 目的地儲存貯體擁有者必須在目的地儲存貯體政策中，授予來源儲存貯體擁有者複寫物件的許可。
+ 如果您要複寫在跨帳戶案例中搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 使用伺服器端加密來進行加密的物件，KMS 金鑰的擁有者必須授予來源儲存貯體擁有者使用 KMS 金鑰的許可。如需詳細資訊，請參閱[跨帳戶案例之授予其他許可](replication-config-for-kms-objects.md#replication-kms-cross-acct-scenario)。
+ 複寫的物件預設會由來源儲存貯體擁有者所擁有。在跨帳戶案例中，您可能會想要設定複寫，將所複寫物件的擁有權變更為由目的地儲存貯體擁有者所擁有。如需詳細資訊，請參閱[變更複本擁有者](replication-change-owner.md)。

**在來源和目的地儲存貯體由不同 擁有時設定複寫 AWS 帳戶**

1. 在此範例中，您會在兩個不同的 AWS 帳戶中建立來源和目的地儲存貯體。您必須為 AWS CLI設定兩個憑證設定檔。此範例會針對這些設定檔名稱使用 `acctA` 和 `acctB`。如需設定憑證設定檔和使用具名設定檔的相關資訊，請參閱《AWS Command Line Interface 使用者指南》**中的[組態和憑證檔案設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

1. 依照[設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)中的逐步說明操作，但要進行下列變更​：
   + 對於與來源儲存貯體活動相關的所有 AWS CLI 命令 （例如建立來源儲存貯體、啟用版本控制和建立 IAM 角色），請使用 `acctA`設定檔。使用 `acctB` 設定檔建立目的地儲存貯體。
   + 請確定 IAM 角色許可政策指定您為此範例建立的來源和目的地儲存貯體。

1. 在主控台中，新增 *destination* 儲存貯體上的下列儲存貯體政策，來允許 *source* 儲存貯體擁有者複寫物件。如需說明，請參閱[使用 Amazon S3 主控台新增儲存貯體政策](add-bucket-policy.md)。請務必提供來源儲存貯體擁有者的 AWS 帳戶 ID、IAM 角色名稱和目的地儲存貯體名稱來編輯政策。
**注意**  
若要使用下列範例，請以您自己的資訊取代 `user input placeholders`。用您的目的地儲存貯體名稱取代 `amzn-s3-demo-destination-bucket`。使用您用於此複寫組態的 IAM 角色來取代 IAM Amazon Resource Name (ARN) 中的 `source-bucket-account-ID:role/service-role/source-account-IAM-role`。  
如果您手動建立了 IAM 服務角色，請將角色路徑設定為 IAM ARN 格式的 `role/service-role/`，如下列政策範例所示。如需詳細資訊，請參閱《IAM 使用者指南》中的 [IAM ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "",
       "Statement": [
           {
               "Sid": "Set-permissions-for-objects",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
               },
               "Action": [
                   "s3:ReplicateObject",
                   "s3:ReplicateDelete"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
           },
           {
               "Sid": "Set-permissions-on-bucket",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
               },
               "Action": [
                   "s3:GetBucketVersioning",
                   "s3:PutBucketVersioning"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
           }
       ]
   }
   ```

------

1. (選用) 如果您要複寫使用 SSE-KMS 加密的物件，KMS 金鑰的擁有者必須授予來源儲存貯體擁有者使用 KMS 金鑰的許可。如需詳細資訊，請參閱[跨帳戶案例之授予其他許可](replication-config-for-kms-objects.md#replication-kms-cross-acct-scenario)。

1. (選用) 在複寫中，來源物件的擁有者預設會擁有複本。當來源和目的地儲存貯體由不同的 擁有時 AWS 帳戶，您可以新增選用的組態設定，將複本擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。這包含授予 `ObjectOwnerOverrideToBucketOwner` 許可。如需詳細資訊，請參閱[變更複本擁有者](replication-change-owner.md)。

# 變更複本擁有者
<a name="replication-change-owner"></a>

在複寫中，來源物件的擁有者依預設也擁有複本。不過，當來源和目的地儲存貯體由不同的 擁有時 AWS 帳戶，您可能想要變更複本擁有權。例如，您可能想要變更擁有權，以限制對物件複本的存取。在複寫組態中，您可以新增選用的組態設定，將複本擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。

若要變更複本擁有者，請執行下列動作：
+ 將*擁有者覆寫*選項新增至複寫組態，以指示 Amazon S3 變更複本所有權。
+ 授予 Amazon S3 變更複本擁有權的 `s3:ObjectOwnerOverrideToBucketOwner` 許可。
+ 在目的地儲存貯體政策中新增 `s3:ObjectOwnerOverrideToBucketOwner` 許可，以允許變更複本所有權。`s3:ObjectOwnerOverrideToBucketOwner` 許可能夠讓目的地儲存貯體的擁有者接受物件複本的擁有權。

如需詳細資訊，請參閱[所有權覆寫選項的考量事項](#repl-ownership-considerations)及[將擁有者覆寫選項新增至複寫組態](#repl-ownership-owneroverride-option)。如需含逐步說明的運作範例，請參閱 [如何變更複本擁有者](#replication-walkthrough-3)。

**重要**  
您可以針對物件擁有權使用儲存貯體擁有者強制執行的「物件擁有權」設定，而不是使用擁有者覆寫選項。當您使用複寫，且來源和目的地儲存貯體由不同的 擁有時 AWS 帳戶，目的地儲存貯體的儲存貯體擁有者可以使用物件擁有權的儲存貯體擁有者強制執行設定，將複本擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。此設定會停用物件存取控制清單 (ACL)。  
由儲存貯體擁有者強制執行的設定會模擬現有的擁有者覆寫行為，而無需 `s3:ObjectOwnerOverrideToBucketOwner` 許可。使用儲存貯體擁有者強制執行設定複寫至目的地儲存貯體的所有物件都由目的地儲存貯體擁有者所擁有。如需「物件擁有權」的詳細資訊，請參閱 [控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

## 所有權覆寫選項的考量事項
<a name="repl-ownership-considerations"></a>

當您設定擁有者覆寫選項時有下列考量：
+ 依預設，來源物件的擁有者也擁有複本。Amazon S3 會複寫物件版本以及與其相關聯的 ACL。

  如果您將擁有者覆寫選項新增至您的複寫組態，Amazon S3 僅會複寫物件版本，而不會複寫 ACL。此外，Amazon S3 不會將後續變更複寫到來源物件 ACL。Amazon S3 會在複本上設定 ACL，將完整控制權授予目的地儲存貯體擁有者。
+  當您更新複寫組態以啟用或停用擁有者覆寫時，會發生下列行為：
  + 如果您將擁有者覆寫選項新增至複寫組態：

    當 Amazon S3 複寫物件版本時，其會捨棄與來源物件相關聯的 ACL。相反地，Amazon S3 會在複本上設定 ACL，將完整控制權授予目的地儲存貯體的擁有者。Amazon S3 不會將後續變更複寫到來源物件 ACL。不過，如果是在您設定擁有者覆寫選項之前即已複寫的物件版本，就不適用這項 ACL 變更。針對在設定擁有者覆寫之前即已複寫的來源物件，系統會繼續複寫其中的任何 ACL 更新 (因為物件及其複本的擁有者仍然相同)。
  + 如果您移除複寫組態中的擁有者覆寫選項：

    Amazon S3 會將來源儲存貯體中出現的新物件與相關聯的 ACL 複寫至目的地儲存貯體。如果物件是在您移除擁有者覆寫之前即已複寫，Amazon S3 就不會複寫 ACL，因為 Amazon S3 所做的物件擁有權變更仍然有效。亦即，針對在設定擁有者覆寫時複寫的物件版本，系統仍然不會複寫其上的 ACL。

## 將擁有者覆寫選項新增至複寫組態
<a name="repl-ownership-owneroverride-option"></a>

**警告**  
只有在來源和目的地儲存貯體由不同 擁有時，才新增擁有者覆寫選項 AWS 帳戶。Amazon S3 不會檢查儲存貯體的擁有者是相同或不同的帳戶。如果您在兩個儲存貯體都由相同擁有時新增擁有者覆寫 AWS 帳戶，Amazon S3 會套用擁有者覆寫。此選項會將完整許可授予目的地儲存貯體擁有者，而且不會將後續更新複寫至來源物件存取控制清單 (ACL)。複本擁有者可以使用 `PutObjectAcl` 要求直接變更與複本相關聯的 ACL，但不是透過複寫。

若要指定擁有者覆寫選項，請將下列項目新增至 `Destination` 元素：
+ `AccessControlTranslation` 元素，其可通知 Amazon S3 變更複本擁有權
+ `Account` 元素，指定目的地儲存貯體擁有者 AWS 帳戶 的 

```
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    ...
    <Destination>
      ...
      <AccessControlTranslation>
           <Owner>Destination</Owner>
       </AccessControlTranslation>
      <Account>destination-bucket-owner-account-id</Account>
    </Destination>
  </Rule>
</ReplicationConfiguration>
```

下列複寫組態範例會通知 Amazon S3，將含 *`Tax`* 金鑰字首的物件複寫至 `amzn-s3-demo-destination-bucket` 目的地儲存貯體，並變更複本的擁有權。若要使用此範例，請以您自己的資訊取代 `user input placeholders`。

```
<?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>
      <ID>Rule-1</ID>
      <Priority>1</Priority>
      <Status>Enabled</Status>
      <DeleteMarkerReplication>
         <Status>Disabled</Status>
      </DeleteMarkerReplication>
      <Filter>
         <Prefix>Tax</Prefix>
      </Filter>
      <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
         <Account>destination-bucket-owner-account-id</Account>
         <AccessControlTranslation>
            <Owner>Destination</Owner>
         </AccessControlTranslation>
      </Destination>
   </Rule>
</ReplicationConfiguration>
```

## 授予 Amazon S3 變更複本擁有權的許可
<a name="repl-ownership-add-role-permission"></a>

透過在與 AWS Identity and Access Management (IAM) 角色相關聯的許可政策中新增`s3:ObjectOwnerOverrideToBucketOwner`動作的許可，授予 Amazon S3 變更複本擁有權的許可。此角色為您在複寫組態中指定的 IAM 角色，其可讓 Amazon S3 擔任角色並代您複寫物件。若要使用下列範例，請使用目的地儲存貯體的名稱取代 `amzn-s3-demo-destination-bucket`。

```
...
{
    "Effect":"Allow",
         "Action":[
       "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
}
...
```

## 在目的地儲存貯體政策中新增許可，以允許變更複本所有權
<a name="repl-ownership-accept-ownership-b-policy"></a>

目的地儲存貯體擁有者必須授予來源儲存貯體擁有者變更複本所有權的許可。目的地儲存貯體擁有者可授予來源儲存貯體擁有者 `s3:ObjectOwnerOverrideToBucketOwner` 動作的許可。此許可能夠讓目的地儲存貯體擁有者接受物件複本的所有權。下列範例儲存貯體政策陳述式說明如何執行此作業。若要使用此範例，請以您自己的資訊取代 `user input placeholders`。

```
...
{
    "Sid":"1",
    "Effect":"Allow",
    "Principal":{"AWS":"source-bucket-account-id"},
    "Action":["s3:ObjectOwnerOverrideToBucketOwner"],
    "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
}
...
```

## 如何變更複本擁有者
<a name="replication-walkthrough-3"></a>

當複寫組態中的來源和目的地儲存貯體由不同的 擁有時 AWS 帳戶，您可以告知 Amazon S3 將複本擁有 AWS 帳戶 權變更為擁有目的地儲存貯體的 。下列範例示範如何使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 和 AWS SDKs來變更複本擁有權。

### 使用 S3 主控台
<a name="replication-ex3-console"></a>

如需逐步說明，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。本主題提供當來源和目的地儲存貯體為相同和不同擁有者時，設定複寫組態的指示 AWS 帳戶。

### 使用 AWS CLI
<a name="replication-ex3-cli"></a>

下列程序說明如何使用 AWS CLI變更複本擁有權。在此過程中，您將執行以下操作：
+ 建立來源與目的地儲存貯體。
+ 在儲存貯體上啟用版本控制。
+ 建立 AWS Identity and Access Management (IAM) 角色，授予 Amazon S3 複寫物件的許可。
+ 將複寫組態新增至來源儲存貯體。
+ 請在複寫組態中指示 Amazon S3 變更複本擁有權。
+ 測試您的複寫組態。

**在來源和目的地儲存貯體由 different AWS 帳戶 (AWS CLI) 擁有時變更複本擁有權**

若要使用此程序中的範例 AWS CLI 命令，請將 取代`user input placeholders`為您自己的資訊。

1. 在此範例中，您會在兩個不同的 中建立來源和目的地儲存貯體 AWS 帳戶。若要使用這兩個帳戶，請使用兩個具名設定檔來設定 AWS CLI 。此範例分別使用名為 *`acctA`* 和 *`acctB`* 的設定檔。如需設定憑證設定檔和使用具名設定檔的相關資訊，請參閱《AWS Command Line Interface 使用者指南》**中的[組態和憑證檔案設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。
**重要**  
用於此程序的設定檔必須擁有必要的許可。例如，您可以在複寫組態中指定 Amazon S3 可以擔任的 IAM 角色。只有當您所用的設定檔有 `iam:PassRole` 許可時，才可執行此作業。如果您使用管理員使用者憑證建立具名設定檔，即可執行此程序中的所有任務。如需詳細資訊，請參閱《IAM 使用者指南》**中[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

1. 建立 *source* 儲存貯體並啟用版本控制。本範例會在美國東部 (維吉尼亞北部) (`us-east-1`) 區域中建立名為 `amzn-s3-demo-source-bucket` 的來源儲存貯體。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 建立 *destination* 儲存貯體並啟用版本控制。本範例會在美國西部 (奧勒岡) (`us-west-2`) 區域中建立名為 `amzn-s3-demo-destination-bucket` 的目的地儲存貯體。使用不同於來源儲存貯體所使用的 AWS 帳戶 設定檔。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctB
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctB
   ```

1. 您必須在 *destination* 儲存貯體政策中新增許可，以允許複本擁有權的變更。

   1.  將以下政策儲存到名為 `destination-bucket-policy.json` 的檔案。請務必以您自己的資訊取代 *`user input placeholders`*。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "destination_bucket_policy_sid",
                  "Principal": {
                      "AWS": "source-bucket-owner-123456789012"
                  },
                  "Action": [
                      "s3:ReplicateObject",
                      "s3:ReplicateDelete",
                      "s3:ObjectOwnerOverrideToBucketOwner",
                      "s3:ReplicateTags",
                      "s3:GetObjectVersionTagging"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
                  ]
              }
          ]
      }
      ```

------

   1. 使用下列 `put-bucket-policy` 命令，將上述政策新增至目的地儲存貯體：

      ```
      aws s3api put-bucket-policy --region $ {destination-region} --bucket $ {amzn-s3-demo-destination-bucket} --policy file://destination_bucket_policy.json
      ```

1. 建立 IAM 角色。您可以在複寫組態中指定稍後要新增至 *source* 儲存貯體的角色，Amazon S3 就會擔任此角色以代您複寫物件。建立 IAM 角色需要兩個步驟：
   + 建立角色。
   + 將許可政策連接到角色。

   1. 建立 IAM 角色。

      1. 複製下列信任政策，並將它儲存至本機電腦目前目錄下名稱為 `s3-role-trust-policy.json` 的檔案中。此政策會授予 Amazon S3 擔任該角色的許可。

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. 執行下列 AWS CLI `create-role`命令來建立 IAM 角色：

         ```
         $ aws iam create-role \
         --role-name replicationRole \
         --assume-role-policy-document file://s3-role-trust-policy.json  \
         --profile acctA
         ```

         記下您所建立 IAM 角色的 Amazon Resource Name (ARN)。稍後的步驟中會需要此 ARN。

   1. 將許可政策連接到角色。

      1. 複製下列許可政策，並將它儲存至本機電腦目前目錄中名為 `s3-role-perm-pol-changeowner.json` 的檔案。此政策會授予各種 Amazon S3 儲存貯體與物件動作的許可。在下列步驟中，您需要將此政策附加至您先前建立的 IAM 角色。

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ListBucket",
                     "s3:GetReplicationConfiguration"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ReplicateObject",
                     "s3:ReplicateDelete",
                     "s3:ObjectOwnerOverrideToBucketOwner",
                     "s3:ReplicateTags",
                     "s3:GetObjectVersionTagging"
                  ],
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               }
            ]
         }
         ```

------

      1. 若要將先前的許可政策附加至角色，請執行下列 `put-role-policy` 命令：

         ```
         $ aws iam put-role-policy \
         --role-name replicationRole \
         --policy-document file://s3-role-perm-pol-changeowner.json \
         --policy-name replicationRolechangeownerPolicy \
         --profile acctA
         ```

1. 將複寫組態新增到來源儲存貯體。

   1.  AWS CLI 需要將複寫組態指定為 JSON。將下列 JSON 儲存至您本機電腦目前目錄中名為 `replication.json` 的檔案。在組態中，`AccessControlTranslation` 會指定將複本擁有權從來源儲存貯體擁有者變更為目的地儲存貯體擁有者。

      ```
      {
         "Role":"IAM-role-ARN",
         "Rules":[
            {
               "Status":"Enabled",
               "Priority":1,
               "DeleteMarkerReplication":{
                  "Status":"Disabled"
               },
               "Filter":{
               },
               "Status":"Enabled",
               "Destination":{
                  "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket",
                  "Account":"destination-bucket-owner-account-id",
                  "AccessControlTranslation":{
                     "Owner":"Destination"
                  }
               }
            }
         ]
      }
      ```

   1. 透過提供目的地儲存貯體名稱、目的地儲存貯體擁有者帳戶 ID 和 `IAM-role-ARN` 的值來編輯 JSON。將 *`IAM-role-ARN`* 取代為您先前建立之 IAM 角色的 ARN。儲存變更。

   1. 若要將複寫組態新增至來源儲存貯體，請執行下列命令：

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

1. 在 Amazon S3 主控台中檢查複本擁有權，以測試您的複寫組態。

   1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

   1. 將物件新增到*來源*儲存貯體。確認目的地儲存貯體包含物件複本，且複本的擁有權已變更為 AWS 帳戶 擁有目的地儲存貯體的 。

### 使用 AWS SDKs
<a name="replication-ex3-sdk"></a>

 如需新增複寫組態的程式碼範例，請參閱[使用 AWS SDKs](replication-walkthrough1.md#replication-ex1-sdk)。您必須正確修改複寫組態。如需相關概念資訊，請參閱 [變更複本擁有者](#replication-change-owner)。

# 使用 S3 複寫時間控制來滿足合規要求
<a name="replication-time-control"></a>

S3 複寫時間控制 (S3 RTC) 可協助滿足資料複寫的合規性或業務要求，讓您清楚掌握 Amazon S3 複寫時間。S3 RTC 會在數秒內複寫您上傳至 Amazon S3 的多數物件，以及在 15 分鐘內複寫 99.9% 的這些物件。

S3 RTC 預設會包含兩種追蹤複寫進度的方式：
+ **S3 複寫指標** - 您可以使用複寫指標來監控待複寫的 S3 API 操作總數、待複寫的物件總大小、目的地區域的複寫時間上限，以及複寫失敗的操作總數。然後，您可以監控個別複寫的每個資料集。您也可以獨立於 S3 RTC 啟用 S3 複寫指標。如需詳細資訊，請參閱[使用 S3 複寫指標](repl-metrics.md)。

  啟用具有 S3 複寫時間控制 (S3 RTC) 的複寫規則會發佈 S3 複寫指標。複寫指標可在啟用 S3 RTC 後的 15 分鐘內使用。複寫指標可透過 Amazon S3 主控台、Amazon S3 API、 AWS SDKs、 AWS Command Line Interface (AWS CLI) 和 Amazon CloudWatch 取得。如需 CloudWatch 指標的詳細資訊，請參閱[使用 Amazon CloudWatch 監控指標](cloudwatch-monitoring.md)。如需有關透過 Amazon S3 主控台檢視複寫指標的詳細資訊，請參閱[檢視複寫指標](repl-metrics.md#viewing-replication-metrics)。

  S3 複寫指標的計費方式與 Amazon CloudWatch 自訂指標相同。如需詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。
+ **Amazon S3 事件通知** – 如果物件複寫超過 15 分鐘閾值或在此閾值之後複寫，S3 RTC 會提供可通知儲存貯體擁有者的 `OperationMissedThreshold` 和 `OperationReplicatedAfterThreshold` 事件。透過 S3 RTC，Amazon S3 事件可在物件未在 15 分鐘內複寫，以及這些物件在 15 分鐘閾值後複寫的罕見情況下通知您。

  複寫事件可在啟用 S3 RTC 後的 15 分鐘內使用。Amazon S3 事件通知可透過 Amazon SQS、Amazon SNS 或 取得 AWS Lambda。如需詳細資訊，請參閱[使用 Amazon S3 事件通知接收複寫失敗事件](replication-metrics-events.md)。

 

## S3 RTC 的最佳實務和指導方針
<a name="rtc-best-practices"></a>

在啟用 S3 複寫時間控制 (S3 RTC) 的 Amazon S3 中複寫資料時，請遵循這些最佳實務指導方針，以最佳化工作負載的複寫效能。

**Topics**
+ [

### Amazon S3 複寫與請求率效能的指導方針
](#rtc-request-rate-performance)
+ [

### 預估您的複寫請求率
](#estimating-replication-request-rates)
+ [

### 超過 S3 RTC 資料傳輸速率限制
](#exceed-rtc-data-transfer-limits)
+ [

### AWS KMS 加密物件複寫請求率
](#kms-object-replication-request-rates)

### Amazon S3 複寫與請求率效能的指導方針
<a name="rtc-request-rate-performance"></a>

從 Amazon S3 上傳和擷取儲存時，您的應用程式可以在請求效能中實現每秒數千筆交易。例如，在 S3 儲存貯體中，應用程式在 S3 儲存貯體內至少可達到每個字首每秒 3,500 個 `PUT`/`COPY`/`POST`/`DELETE` 或 5,500 個 `GET`/`HEAD` 請求，包括 S3 複寫代您進行的請求。在儲存貯體中的字首數不受限制。您可以並行讀取以提升您的讀取或寫入的效能。例如，如果您在 S3 儲存貯體裡建立 10 個字首以進行平行讀取，您可以將讀取效能擴展至每秒 55,000 讀取請求。

Amazon S3 會自動擴展以回應高於這些指導方針的持續請求率，或與 `LIST` 請求並行的持續請求率。當 Amazon S3 在內部針對新請求率最佳化時，您將會暫時收到 HTTP 503 請求回應，直到最佳化完成為止。當每秒的請求率增加，或當您第一次啟用 S3 RTC 時，可能會發生此行為。在這些期間，您的複寫延遲可能會增加。S3 RTC 服務水準協議 (SLA) 不適用 Amazon S3 效能指導方針超過每秒請求數的期間。

S3 RTC SLA 也不適用複寫資料傳輸率超過預設每秒 1 Gigabit (Gbps) 配額的期間。如果預期複寫傳輸率超過 1 Gbps，您可以聯絡 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)或使用 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 來請求增加複寫傳輸率配額。

### 預估您的複寫請求率
<a name="estimating-replication-request-rates"></a>

您的請求率總計 (包括 Amazon S3 代表您進行的複寫請求) 必須符合複寫來源和目的地儲存貯體的 Amazon S3 請求率指導方針。對於每個複寫的物件，Amazon S3 複寫最多會對來源儲存貯體形成五個 `GET`/`HEAD` 請求和一個 `PUT` 請求，以及對每個目的地儲存貯體形成一個 `PUT` 請求。

例如，如果您預期每秒複寫 100 個物件，Amazon S3 複寫可能會代表您執行額外 100 個 `PUT` 請求，因此，對來源 S3 儲存貯體每秒總計 200 個 `PUT` 請求。Amazon S3 複寫也可能會執行最多 500 個 `GET`/`HEAD` 請求 (每個複寫的物件 5 個 `GET`/`HEAD` 請求)。

**注意**  
對於每個複寫的物件，只會產生一個 `PUT` 請求成本。如需詳細資訊，請參閱[有關複寫的 Amazon S3 常見問答集](https://aws.amazon.com/s3/faqs/#Replication)中的定價資訊。

### 超過 S3 RTC 資料傳輸速率限制
<a name="exceed-rtc-data-transfer-limits"></a>

如果您預期 S3 RTC 資料傳輸率會超過預設的 1 Gbps 配額，請聯絡 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)或使用 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 來請求增加複寫傳輸率配額。

### AWS KMS 加密物件複寫請求率
<a name="kms-object-replication-request-rates"></a>

當您複寫使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 進行伺服器端加密的物件時，會套用每秒 AWS KMS 請求配額。 AWS KMS 可能會拒絕其他有效的請求，因為您的請求速率超過每秒請求數的配額。當請求受到調節時， 會 AWS KMS 傳回`ThrottlingException`錯誤。 AWS KMS 請求率配額適用於您直接提出的請求，以及 Amazon S3 複寫代表您提出的請求。

例如，如果您預期每秒複寫 1，000 個物件，您可以從請求率配額中減去 2，000 個 AWS KMS 請求。產生的每秒請求率適用於不包括複寫的 AWS KMS 工作負載。您可以使用 [AWS KMS Amazon CloudWatch 中的請求指標](https://docs.aws.amazon.com/kms/latest/developerguide/monitoring-cloudwatch.html)來監控 上的總 AWS KMS 請求率 AWS 帳戶。

若要請求提高每秒 AWS KMS 請求配額，請聯絡 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)或使用 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)。

## 啟用 S3 複寫時間控制
<a name="replication-walkthrough-5"></a>

您可以開始使用 S3 複寫時間控制 (S3 RTC) 搭配新的或現有的複寫規則。您可以選擇將複寫規則套用至整個儲存貯體，或套用至具有特定字首或標籤的物件。當您啟用 S3 RTC 時，也會在複寫規則上啟用 S3 複寫指標。

您可以使用 Amazon S3 主控台、Amazon S3 API、 AWS SDKs和 AWS Command Line Interface () Amazon S3 RTC AWS CLI。 Amazon S3 

**Topics**

### 使用 S3 主控台
<a name="replication-ex5-console"></a>

如需逐步說明，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。本主題提供當來源和目的地儲存貯體為相同和不同擁有者時，在複寫組態中啟用 S3 RTC 的說明 AWS 帳戶。

### 使用 AWS CLI
<a name="replication-ex5-cli"></a>

若要使用 AWS CLI 複寫已啟用 S3 RTC 的物件，您可以建立儲存貯體、在儲存貯體上啟用版本控制、建立提供 Amazon S3 複寫物件許可的 IAM 角色，以及將複寫組態新增至來源儲存貯體。複寫組態必須啟用 S3 RTC，如下列範例所示。

如需使用 設定複寫組態的step-by-step說明 AWS CLI，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。

下列範例複寫組態會啟用並設定複寫規則的 `ReplicationTime` 和 `EventThreshold` 值。啟用和設定這些值會在規則上啟用 S3 RTC。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "DeleteMarkerReplication": {
                "Status": "Disabled"
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
                "Metrics": {
                    "Status": "Enabled",
                    "EventThreshold": {
                        "Minutes": 15
                    }
                },
                "ReplicationTime": {
                    "Status": "Enabled",
                    "Time": {
                        "Minutes": 15
                    }
                }
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

**重要**  
 `Metrics:EventThreshold:Minutes` 和 `ReplicationTime:Time:Minutes` 只能使用 `15` 作為有效值。

### 使用適用於 Java 的 AWS 開發套件
<a name="replication-ex5-sdk"></a>

 下列是在啟用 S3 複寫時間控制 (S3 RTC) 時新增複寫組態的 Java 範例。

```
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.model.DeleteMarkerReplication;
import software.amazon.awssdk.services.s3.model.Destination;
import software.amazon.awssdk.services.s3.model.Metrics;
import software.amazon.awssdk.services.s3.model.MetricsStatus;
import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.ReplicationConfiguration;
import software.amazon.awssdk.services.s3.model.ReplicationRule;
import software.amazon.awssdk.services.s3.model.ReplicationRuleFilter;
import software.amazon.awssdk.services.s3.model.ReplicationTime;
import software.amazon.awssdk.services.s3.model.ReplicationTimeStatus;
import software.amazon.awssdk.services.s3.model.ReplicationTimeValue;

public class Main {

  public static void main(String[] args) {
    S3Client s3 = S3Client.builder()
      .region(Region.US_EAST_1)
      .credentialsProvider(() -> AwsBasicCredentials.create(
          "AWS_ACCESS_KEY_ID",
          "AWS_SECRET_ACCESS_KEY")
      )
      .build();

    ReplicationConfiguration replicationConfig = ReplicationConfiguration
      .builder()
      .rules(
          ReplicationRule
            .builder()
            .status("Enabled")
            .priority(1)
            .deleteMarkerReplication(
                DeleteMarkerReplication
                    .builder()
                    .status("Disabled")
                    .build()
            )
            .destination(
                Destination
                    .builder()
                    .bucket("destination_bucket_arn")
                    .replicationTime(
                        ReplicationTime.builder().time(
                            ReplicationTimeValue.builder().minutes(15).build()
                        ).status(
                            ReplicationTimeStatus.ENABLED
                        ).build()
                    )
                    .metrics(
                        Metrics.builder().eventThreshold(
                            ReplicationTimeValue.builder().minutes(15).build()
                        ).status(
                            MetricsStatus.ENABLED
                        ).build()
                    )
                    .build()
            )
            .filter(
                ReplicationRuleFilter
                    .builder()
                    .prefix("testtest")
                    .build()
            )
        .build())
        .role("role_arn")
        .build();

    // Put replication configuration
    PutBucketReplicationRequest putBucketReplicationRequest = PutBucketReplicationRequest
      .builder()
      .bucket("source_bucket")
      .replicationConfiguration(replicationConfig)
      .build();

    s3.putBucketReplication(putBucketReplicationRequest);
  }
}
```

# 複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)
<a name="replication-config-for-kms-objects"></a>

**重要**  
Amazon S3 現在將伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 套用為 Amazon S3 中每個儲存貯體的基本加密層級。從 2023 年 1 月 5 日起，所有上傳到 Amazon S3 的新物件都會自動加密，無需額外費用，也不會影響效能。S3 儲存貯體預設加密組態和新物件上傳的自動加密狀態可在 CloudTrail 日誌、S3 庫存、S3 Storage Lens、Amazon S3 主控台，以及 AWS CLI 和 AWS SDKs 中的其他 Amazon S3 API 回應標頭中使用。如需詳細資訊，請參閱[預設加密常見問答集](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)。

複製已使用伺服器端加密進行加密的物件時，有一些特殊的考量。Amazon S3 支援下列三種類型的伺服器端加密：
+ 使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密
+ 使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS)
+ 使用 AWS KMS 金鑰進行雙層伺服器端加密 (DSSE-KMS)
+ 使用客戶提供金鑰 (SSE-C) 的伺服器端加密

如需伺服器端加密的詳細資訊，請參閱「[使用伺服器端加密保護資料](serv-side-encryption.md)」。

本主題說明指示 Amazon S3 複寫已使用伺服器端加密進行加密的物件所需的許可。本主題也提供您可以新增的其他組態元素，以及授予複寫加密物件必要許可的 example AWS Identity and Access Management (IAM) 政策。

如需逐步說明範例，請參閱 [啟用加密物件的複寫作業](#replication-walkthrough-4)。如需建立複寫組態的資訊，請參閱 [複寫區域內和跨區域的物件](replication.md)。

**注意**  
您可以在 Amazon S3 AWS KMS keys 中使用多區域。但是，Amazon S3 目前將多區域金鑰視為單區域金鑰，並且不使用金鑰的多區域功能。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[使用多區域金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。

**Topics**
+ [

## 預設儲存貯體加密如何影響複寫
](#replication-default-encryption)
+ [

## 複寫使用 SSE-C 加密的物件
](#replicationSSEC)
+ [

## 複寫使用 SSE-S3、SSE-KMS 或 DSSE-KMS 加密的物件
](#replications)
+ [

## 啟用加密物件的複寫作業
](#replication-walkthrough-4)

## 預設儲存貯體加密如何影響複寫
<a name="replication-default-encryption"></a>

在您啟用域複寫目的地儲存貯體的預設加密之後，適用下列加密行為：
+ 如果未加密來源儲存貯體中的物件，則會使用目的地儲存貯體的預設加密設定來加密目的地儲存貯體中的複本物件。因此，來源物件的實體標籤 (ETag) 與複本物件的 ETag 不同。如果您有使用 ETag 的應用程式，則必須更新這些應用程式以解決此差異。
+ 如果透過使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3)、伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 或雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS) 來加密來源儲存貯體中的物件，則目的地儲存貯體中的複本物件會使用與來源物件相同的加密類型。不會使用目的地儲存貯體的預設加密設定。

## 複寫使用 SSE-C 加密的物件
<a name="replicationSSEC"></a>

藉由搭配客戶提供的金鑰 (SSE-C) 來使用伺服器端加密，您可以管理自有的專屬加密金鑰。使用 SSE-C，您負責管理金鑰，而 Amazon S3 則管理加密和解密程序。您必須提供加密金鑰作為請求的一部分，但不需要撰寫任何程式碼來執行物件加密或解密。當您上傳物件時，Amazon S3 會使用您提供的金鑰加密物件。然後 Amazon S3 會從記憶體中清除該金鑰。當您擷取物件時，您必須在要求中提供相同的加密金鑰。如需詳細資訊，請參閱[搭配客戶提供的金鑰 (SSE-C) 使用伺服器端加密](ServerSideEncryptionCustomerKeys.md)。

S3 複寫支援使用 SSE-C 加密的物件。 您可以在 Amazon S3 主控台或使用 AWS SDKs 設定 SSE-C 物件複寫，方法與為未加密物件設定複寫相同。除了目前複寫所需的許可外，沒有其他 SSE-C 許可。

如果新上傳的 SSE-C 加密物件符合資格，S3 複寫會根據 S3 複寫組態自動複寫這些物件。如需複寫儲存貯體中的現有物件，請使用 S3 批次複寫。如需複寫物件的詳細資訊，請參閱 [設定即時複寫概觀](replication-how-setup.md) 和 [使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。

複寫 SSE-C 物件沒有額外費用。如需複寫定價的詳細資料，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

## 複寫使用 SSE-S3、SSE-KMS 或 DSSE-KMS 加密的物件
<a name="replications"></a>

根據預設，Amazon S3 不會複寫使用 SSE-KMS 或 DSSE-KMS 加密的物件。本節說明您可以新增，以指示 Amazon S3 複寫這些物件的額外組態元素。

如需逐步說明範例，請參閱 [啟用加密物件的複寫作業](#replication-walkthrough-4)。如需建立複寫組態的資訊，請參閱 [複寫區域內和跨區域的物件](replication.md)。

### 在複寫組態中指定其他資訊
<a name="replication-kms-extra-config"></a>

在複寫組態中，請執行下列作業：
+ 在複寫組態的 `Destination`元素中，新增您希望 Amazon S3 用來加密物件複本的對稱 AWS KMS 客戶受管金鑰 ID，如下列範例複寫組態所示。
+ 透過啟用使用 KMS 金鑰 (SSE-KMS 或 DSSE-KMS) 加密物件的複寫，來明確加入。若要選擇加入，請新增 `SourceSelectionCriteria` 元素，如以下範例複寫組態所示。

 

```
<ReplicationConfiguration>
   <Rule>
      ...
      <SourceSelectionCriteria>
         <SseKmsEncryptedObjects>
           <Status>Enabled</Status>
         </SseKmsEncryptedObjects>
      </SourceSelectionCriteria>

      <Destination>
          ...
          <EncryptionConfiguration>
             <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same AWS 區域 as the destination bucket.</ReplicaKmsKeyID>
          </EncryptionConfiguration>
       </Destination>
      ...
   </Rule>
</ReplicationConfiguration>
```

**重要**  
KMS 金鑰必須在 AWS 區域 與目的地儲存貯體相同的 中建立。
KMS 金鑰*必須*有效。`PutBucketReplication` API 操作不會檢查 KMS 金鑰是否有效。如果使用無效的 KMS 金鑰，您會收到 HTTP `200 OK` 狀態碼回應，但複寫會失敗。

下列範例顯示複寫組態，其中包含選用組態元素。此複寫組態具有一項規則。該規則會套用至金鑰前綴為 `Tax` 的物件。Amazon S3 使用指定的 AWS KMS key ID 來加密這些物件複本。

```
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
   <Role>arn:aws:iam::account-id:role/role-name</Role>
   <Rule>
      <ID>Rule-1</ID>
      <Priority>1</Priority>
      <Status>Enabled</Status>
      <DeleteMarkerReplication>
         <Status>Disabled</Status>
      </DeleteMarkerReplication>
      <Filter>
         <Prefix>Tax</Prefix>
      </Filter>
      <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
         <EncryptionConfiguration>
            <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same AWS 區域 as the destination bucket.</ReplicaKmsKeyID>
         </EncryptionConfiguration>
      </Destination>
      <SourceSelectionCriteria>
         <SseKmsEncryptedObjects>
            <Status>Enabled</Status>
         </SseKmsEncryptedObjects>
      </SourceSelectionCriteria>
   </Rule>
</ReplicationConfiguration>
```

### 授予 IAM 角色的額外許可
<a name="replication-kms-permissions"></a>

若要使用 SSE-S3、SSE-KMS 或 DSSE-KMS 複寫靜態加密的物件，請將下列額外許可授予您在複寫組態中指定的 AWS Identity and Access Management (IAM) 角色。您可以透過更新與 IAM 角色相關聯的許可政策，來授予這些許可。
+ **來源物件的 `s3:GetObjectVersionForReplication` 動作** – 此動作允許 Amazon S3 複寫未加密的物件，以及使用 SSE-S3、SSE-KMS 或 DSSE-KMS 搭配伺服器端加密建立的物件。
**注意**  
建議您使用 `s3:GetObjectVersionForReplication` 動作，不要使用 `s3:GetObjectVersion` 動作，因為 `s3:GetObjectVersionForReplication` 只會提供 Amazon S3 複寫所需的最低許可。此外，`s3:GetObjectVersion` 動作還允許複寫未加密物件和 SSE-S3 加密物件，但不允許複寫使用 KMS 金鑰 (SSE-KMS 或 DSSE-KMS) 加密的物件。
+ **`kms:Decrypt` KMS 金鑰的 和 `kms:Encrypt` AWS KMS 動作**
  + 您必須針對用來解密來源物件的 AWS KMS key 授予 `kms:Decrypt` 許可。
  + 您必須針對用來加密物件複本的 AWS KMS key 授予 `kms:Encrypt` 許可。
+ **`kms:GenerateDataKey`複寫純文字物件的動作** – 如果您要將純文字物件複寫到預設已啟用 SSE-KMS 或 DSSE-KMS 加密的儲存貯體，則必須在 IAM 政策中包含目的地加密內容和 KMS 金鑰的 `kms:GenerateDataKey` 許可。

**重要**  
如果您使用 S3 批次複寫跨區域複寫資料集，且您的物件之前已將其伺服器端加密類型從 SSE-S3 更新為 SSE-KMS，則您可能需要額外的許可。在來源區域儲存貯體上，您必須擁有 `kms:decrypt` 許可。然後，您將需要目的地區域中儲存貯體的 `kms:decrypt`和 `kms:encrypt`許可。

我們建議您使用 AWS KMS 條件索引鍵，僅將這些許可限制為目的地儲存貯體和物件。 AWS 帳戶 擁有 IAM 角色的 必須具有政策中所列 KMS 金鑰的 `kms:Encrypt`和 `kms:Decrypt`動作的許可。如果 KMS 金鑰由另一個金鑰擁有 AWS 帳戶，KMS 金鑰的擁有者必須將這些許可授予 AWS 帳戶 擁有 IAM 角色的 。如需管理這些 KMS 金鑰存取權的詳細資訊，請參閱* AWS Key Management Service 《開發人員指南*》中的[搭配 使用 IAM 政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)。

### S3 儲存貯體金鑰和複寫
<a name="bk-replication"></a>

若要搭配 S3 儲存貯體金鑰使用複寫，用於加密物件複本的 KMS 金鑰 AWS KMS key 政策必須包含呼叫主體的`kms:Decrypt`許可。在使用 S3 儲存貯體金鑰之前，對 `kms:Decrypt` 的呼叫會驗證 S3 儲存貯體金鑰的完整性。如需詳細資訊，請參閱[使用 S3 儲存貯體金鑰與複寫](bucket-key.md#bucket-key-replication)。

針對來源或目的地儲存貯體啟用 S3 儲存貯體金鑰時，加密內容將是儲存貯體 Amazon Resource Name (ARN)，而不是物件的 ARN (例如，`arn:aws:s3:::bucket_ARN`)。您必須更新 IAM 政策，才能將儲存貯體 ARN 用於加密內容：

```
"kms:EncryptionContext:aws:s3:arn": [
"arn:aws:s3:::bucket_ARN"
]
```

如需詳細資訊，請參閱〈使用 REST API〉一節中的 [加密內容 (`x-amz-server-side-encryption-context`)](specifying-kms-encryption.md#s3-kms-encryption-context) 和 [啟用 S3 儲存貯體金鑰之前，要注意的變更](bucket-key.md#bucket-key-changes)。

### 政策範例：搭配複寫使用 SSE-S3 和 SSE-KMS
<a name="kms-replication-examples"></a>

下列範例 IAM 政策顯示了搭配複寫使用 SSE-S3 和 SSE-KMS 的陳述式。

**Example – 透過不同的目的地儲存貯體使用 SSE-KMS**  
下列範例政策顯示搭配不同目的地儲存貯體使用 SSE-KMS 的陳述式。

**Example – 複寫使用 SSE-S3 和 SSE-KMS 建立的物件**  
下列是完整 IAM 政策，其會授予必要的許可來複寫未加密的物件、使用 SSE-S3 建立的物件，以及使用 SSE-KMS 建立的物件。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersionAcl"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/key-prefix1*"
      },
      {
         "Action":[
            "kms:Decrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*"
               ]
            }
         },
         "Resource":[
           "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      },
      {
         "Action":[
            "kms:Encrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket/prefix1*"
               ]
            }
         },
         "Resource":[
            "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      }
   ]
}
```

**Example – 使用 S3 儲存貯體金鑰來複寫物件**  
以下是完整的 IAM 政策，可以授予使用 S3 儲存貯體金鑰來複寫物件的必要許可。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersionAcl"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/key-prefix1*"
      },
      {
         "Action":[
            "kms:Decrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-source-bucket"
               ]
            }
         },
         "Resource":[
           "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      },
      {
         "Action":[
            "kms:Encrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket"
               ]
            }
         },
         "Resource":[
            "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      }
   ]
}
```

### 跨帳戶案例之授予其他許可
<a name="replication-kms-cross-acct-scenario"></a>

在來源和目的地儲存貯體由不同 擁有的跨帳戶案例中 AWS 帳戶，您可以使用 KMS 金鑰來加密物件複本。但是，KMS 金鑰擁有者必須授予來源儲存貯體擁有者使用 KMS 金鑰的許可。

**注意**  
如果您需要跨帳戶複寫 SSE-KMS 資料，則複寫規則必須指定目的地帳戶 AWS KMS 來自 [的客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。 [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) 不允許跨帳戶使用，因此無法用於執行跨帳戶複寫。<a name="cross-acct-kms-key-permission"></a>

**授予來源儲存貯體擁有者使用 KMS 金鑰的許可 (AWS KMS 主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 開啟 AWS KMS 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 若要檢視您所建立及管理帳戶中的金鑰，請在導覽窗格中選擇**Customer managed keys** (客戶受管金鑰)。

1. 選擇 KMS 金鑰。

1. 在**一般組態**下，選擇**金鑰政策**標籤。

1. 向下捲動至**其他 AWS 帳戶**。

1. 選擇**新增其他 AWS 帳戶**。

   **其他 AWS 帳戶** 對話方塊隨即顯示。

1. 在對話方塊中，選擇**新增另一個 AWS 帳戶**。針對 **arn:aws:iam::**，輸入來源儲存貯體帳戶 ID。

1. 選擇**儲存變更**。

**若要授予來源儲存貯體擁有者使用 KMS 金鑰的許可 (AWS CLI)**
+ 如需 `put-key-policy` AWS Command Line Interface (AWS CLI) 命令的詳細資訊，請參閱《 * AWS CLI 命令參考*[https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)》中的 。如需基礎 `PutKeyPolicy` API 操作的相關資訊，請參閱《AWS Key Management Service API 參考》[https://docs.aws.amazon.com/kms/latest/APIReference/](https://docs.aws.amazon.com/kms/latest/APIReference/)中的 [https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)。

### AWS KMS 交易配額考量
<a name="crr-kms-considerations"></a>

當您在啟用跨區域複寫 (CRR) 之後新增許多具有 AWS KMS 加密的新物件時，您可能會遇到限流 (HTTP `503 Service Unavailable`錯誤）。當每秒 AWS KMS 交易數量超過目前配額時，即會發生限流。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

若要請求提升配額，請使用 Service Quotas。如需詳細資訊，請參閱[請求增加配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。如果您的區域不支援 Service Quotas，請[開立 AWS 支援 案例](https://console.aws.amazon.com/support/home#/)。

## 啟用加密物件的複寫作業
<a name="replication-walkthrough-4"></a>

根據預設，Amazon S3 不會複寫使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 或雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS) 加密的物件。若要複寫 SSE-KMS 或 DSS-KMS 加密的物件，請務必修改儲存貯體複寫組態，指示 Amazon S3 複寫這些物件。此範例說明如何使用 Amazon S3 主控台和 AWS Command Line Interface (AWS CLI) 來變更儲存貯體複寫組態，以啟用複寫加密物件。

**注意**  
針對來源或目的地儲存貯體啟用 S3 儲存貯體金鑰時，加密內容將是儲存貯體 Amazon Resource Name (ARN)，而不是物件的 ARN。您必須更新 IAM 政策，才能將儲存貯體 ARN 用於加密內容。如需詳細資訊，請參閱[S3 儲存貯體金鑰和複寫](#bk-replication)。

**注意**  
您可以在 Amazon S3 AWS KMS keys 中使用多區域。但是，Amazon S3 目前將多區域金鑰視為單區域金鑰，並且不使用金鑰的多區域功能。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[使用多區域金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。

### 使用 S3 主控台
<a name="replication-ex4-console"></a>

如需逐步說明，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。本主題提供當來源和目的地儲存貯體為相同和不同擁有者時，設定複寫組態的指示 AWS 帳戶。

### 使用 AWS CLI
<a name="replication-ex4-cli"></a>

若要使用 複寫加密的物件 AWS CLI，請執行下列動作：
+ 建立來源和目的地儲存貯體，並對這些儲存貯體啟用版本控制。
+ 建立 AWS Identity and Access Management (IAM) 服務角色，提供 Amazon S3 複寫物件的許可。IAM 角色許可包含複寫加密物件的必要許可。
+ 將複寫組態新增至來源儲存貯體。複寫組態提供使用 KMS 金鑰複寫加密物件的相關資訊。
+ 將加密物件新增到來源儲存貯體。
+ 測試設定，確認您的加密物件正在複寫到目的地儲存貯體。

下列步驟將逐步引導您完成此程序。

**複寫伺服器端加密物件 (AWS CLI)**

若要在此程序中使用範例，請以您的資訊取代 `user input placeholders`。

1. 在此範例中，您會在相同的 AWS 帳戶中建立來源 (*`amzn-s3-demo-source-bucket`*) 和目的地 (*`amzn-s3-demo-destination-bucket`*) 儲存貯體。您也會設定 AWS CLI的憑證描述檔。此範例使用描述檔名稱 `acctA`。

   如需設定憑證設定檔和使用具名設定檔的相關資訊，請參閱《AWS Command Line Interface 使用者指南》**中的[組態和憑證檔案設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

1. 使用下列命令建立 `amzn-s3-demo-source-bucket` 儲存貯體並在其上啟用版本控制。下列範例命令會在美國東部 (維吉尼亞北部) (`us-east-1`) 區域中建立 `amzn-s3-demo-source-bucket` 儲存貯體。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 使用下列命令建立 `amzn-s3-demo-destination-bucket` 儲存貯體並在其上啟用版本控制。下列範例命令會在美國西部 (奧勒岡) (`us-west-2`) 區域中建立 `amzn-s3-demo-destination-bucket` 儲存貯體。
**注意**  
若要在 `amzn-s3-demo-source-bucket` 和 `amzn-s3-demo-destination-bucket` 儲存貯體位於同一個 AWS 帳戶時設定複寫組態，您可以使用同一個設定檔。此範例使用 `acctA`。若要在儲存貯體由不同 擁有時設定複寫 AWS 帳戶，請為每個儲存貯體指定不同的設定檔。

   

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctA
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 接著，請建立 IAM 服務角色。您將在複寫組態中指定稍後要新增至 `amzn-s3-demo-source-bucket` 儲存貯體的角色，Amazon S3 就會擔任此角色以代您複寫物件。建立 IAM 角色需要兩個步驟：
   + 建立服務角色。
   + 將許可政策連接到角色。

   1. 若要建立 IAM 服務角色，請執行下列動作：

      1. 複製下列信任政策，並將它儲存至本機電腦目前目錄下的 `s3-role-trust-policy-kmsobj.json` 檔案中。此政策會授予 Amazon S3 服務主體擔任該角色的許可，讓 Amazon S3 可以代您執行任務。

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. 使用以下命令來建立角色：

         ```
         $ aws iam create-role \
         --role-name replicationRolekmsobj \
         --assume-role-policy-document file://s3-role-trust-policy-kmsobj.json  \
         --profile acctA
         ```

   1. 接著，請將許可政策連接到角色。此政策會授予各種 Amazon S3 儲存貯體與物件動作的許可。

      1. 複製下列許可政策，並將它儲存至本機電腦目前目錄中名為 `s3-role-permissions-policykmsobj.json` 的檔案。您將建立 IAM 角色，並在稍後將政策連接至該角色。
**重要**  
在許可政策中，您可以指定用於加密 `amzn-s3-demo-source-bucket`和 儲存`amzn-s3-demo-destination-bucket`貯體的 AWS KMS 金鑰 IDs。您必須為 `amzn-s3-demo-source-bucket`和 `amzn-s3-demo-destination-bucket`儲存貯體建立兩個單獨的 KMS 金鑰。 AWS KMS keys aren 不會在建立金鑰 AWS 區域 的 外部共用。

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Action":[
                     "s3:ListBucket",
                     "s3:GetReplicationConfiguration",
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl",
                     "s3:GetObjectVersionTagging"
                  ],
                  "Effect":"Allow",
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket",
                     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                  ]
               },
               {
                  "Action":[
                     "s3:ReplicateObject",
                     "s3:ReplicateDelete",
                     "s3:ReplicateTags"
                  ],
                  "Effect":"Allow",
                  "Condition":{
                     "StringLikeIfExists":{
                        "s3:x-amz-server-side-encryption":[
                           "aws:kms",
                           "AES256",
                           "aws:kms:dsse"
                        ],
                        "s3:x-amz-server-side-encryption-aws-kms-key-id":[
                           "AWS KMS key IDs(in ARN format) to use for encrypting object replicas"  
                        ]
                     }
                  },
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               },
               {
                  "Action":[
                     "kms:Decrypt"
                  ],
                  "Effect":"Allow",
                  "Condition":{
                     "StringLike":{
                        "kms:ViaService":"s3.us-east-1.amazonaws.com",
                        "kms:EncryptionContext:aws:s3:arn":[
                           "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                        ]
                     }
                  },
                  "Resource":[
                     "arn:aws:kms:us-east-1:111122223333:key/key-id" 
                  ]
               },
               {
                  "Action":[
                     "kms:Encrypt"
                  ],
                  "Effect":"Allow",
                  "Condition":{
                     "StringLike":{
                        "kms:ViaService":"s3.us-west-2.amazonaws.com",
                        "kms:EncryptionContext:aws:s3:arn":[
                           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
                        ]
                     }
                  },
                  "Resource":[
                     "arn:aws:kms:us-west-2:111122223333:key/key-id" 
                  ]
               }
            ]
         }
         ```

------

      1. 建立政策，並將政策連接至角色。

         ```
         $ aws iam put-role-policy \
         --role-name replicationRolekmsobj \
         --policy-document file://s3-role-permissions-policykmsobj.json \
         --policy-name replicationRolechangeownerPolicy \
         --profile acctA
         ```

1. 接著，請將下列複寫組態新增至 `amzn-s3-demo-source-bucket` 儲存貯體。該組態會指示 Amazon S3 使用 `amzn-s3-demo-destination-bucket` 儲存貯體的 `Tax/` 字首複寫物件。
**重要**  
您可以在複寫組態中指定 Amazon S3 可以擔任的 IAM 角色。只有當您有 `iam:PassRole` 許可時才可執行此作業。您在 CLI 命令中指定的描述檔必須有此許可。如需詳細資訊，請參閱《IAM 使用者指南》**中[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

   ```
    <ReplicationConfiguration>
     <Role>IAM-Role-ARN</Role>
     <Rule>
       <Priority>1</Priority>
       <DeleteMarkerReplication>
          <Status>Disabled</Status>
       </DeleteMarkerReplication>
       <Filter>
          <Prefix>Tax</Prefix>
       </Filter>
       <Status>Enabled</Status>
       <SourceSelectionCriteria>
         <SseKmsEncryptedObjects>
           <Status>Enabled</Status>
         </SseKmsEncryptedObjects>
       </SourceSelectionCriteria>
       <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
         <EncryptionConfiguration>
           <ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</ReplicaKmsKeyID>
         </EncryptionConfiguration>
       </Destination>
     </Rule>
   </ReplicationConfiguration>
   ```

   請執行下列操作，將複寫組態新增至 `amzn-s3-demo-source-bucket` 儲存貯體：

   1.  AWS CLI 需要您將複寫組態指定為 JSON。將下列 JSON 儲存至本機電腦目前目錄中的檔案 (`replication.json`)。

      ```
      {
         "Role":"IAM-Role-ARN",
         "Rules":[
            {
               "Status":"Enabled",
               "Priority":1,
               "DeleteMarkerReplication":{
                  "Status":"Disabled"
               },
               "Filter":{
                  "Prefix":"Tax"
               },
               "Destination":{
                  "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket",
                  "EncryptionConfiguration":{
                     "ReplicaKmsKeyID":"AWS KMS key IDs (in ARN format) to use for encrypting object replicas"
                  }
               },
               "SourceSelectionCriteria":{
                  "SseKmsEncryptedObjects":{
                     "Status":"Enabled"
                  }
               }
            }
         ]
      }
      ```

   1. 編輯 JSON 以提供 `amzn-s3-demo-destination-bucket` 儲存貯體、`AWS KMS key IDs (in ARN format)`、和 `IAM-role-ARN` 的值。儲存變更。

   1. 使用下列命令，將複寫組態新增至您的 `amzn-s3-demo-source-bucket` 儲存貯體。請務必提供 `amzn-s3-demo-source-bucket` 儲存貯體名稱。

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

1. 測試組態，確認已複寫加密的物件。在 Amazon S3 主控台中，執行下列操作：

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

   1. 在 `amzn-s3-demo-source-bucket` 儲存貯體中，建立名為 `Tax` 的資料夾。

   1. 將範例物件新增至資料夾。請務必選擇加密選項，並指定您的 KMS 金鑰來加密物件。

   1. 確認 `amzn-s3-demo-destination-bucket` 儲存貯體包含物件複本，且這些複本已使用您在組態中指定的 KMS 金鑰加密。如需詳細資訊，請參閱[取得複寫狀態資訊](replication-status.md)。

### 使用 AWS SDKs
<a name="replication-ex4-sdk"></a>

如需新增複寫組態的程式碼範例，請參閱 [使用 AWS SDKs](replication-walkthrough1.md#replication-ex1-sdk)。您必須正確修改複寫組態。

 

# 使用複本修改同步來複寫中繼資料變更
<a name="replication-for-metadata-changes"></a>

Amazon S3 複本修改同步可協助您在複本和來源物件之間複寫物件中繼資料，例如標籤、存取控制清單 (ACL) 和物件鎖定設定。根據預設，Amazon S3 只會將來源物件中的中繼資料複寫至複本。啟用複本修改同步時，Amazon S3 會將對複寫複本所進行的中繼資料變更複寫回來源物件，從而進行雙向複寫。

## 啟用複本修改同步
<a name="enabling-replication-for-metadata-changes"></a>

您可以將 Amazon S3 複本修改同步與全新或現有的複寫規則搭配使用。您可以將其套用至整個儲存貯體，或具有特定字首的物件。

若要使用 Amazon S3 主控台啟用複本修改同步，請參閱[設定即時複寫的範例](replication-example-walkthroughs.md)。本主題提供當來源和目的地儲存貯體為相同或不同擁有者時，在複寫組態中啟用複本修改同步的說明 AWS 帳戶。

若要使用 AWS Command Line Interface (AWS CLI) 啟用複本修改同步，您必須將複寫組態新增至儲存貯體，其中包含`ReplicaModifications`已啟用的複本。若要設定雙向複寫，請從來源儲存貯體 (`amzn-s3-demo-source-bucket`) 建立至含有複寫 (`amzn-s3-demo-destination-bucket`) 之儲存貯體的複寫規則。接著，從包含複本 (`amzn-s3-demo-destination-bucket`) 的儲存貯體建立至來源儲存貯體 (`amzn-s3-demo-source-bucket`) 的第二個複寫規則。來源和目的地儲存貯體可以位於相同或不同位置 AWS 區域。

**注意**  
您必須在來源和目的地儲存貯體上啟用複本修改同步，才能複寫本中繼資料變更，例如複寫物件中的物件存取控制清單 (ACL)、物件標籤或物件鎖定設定。如同所有複寫規則，您可以將這些規則套用至整個儲存貯體，也可以套用至由字首或物件標籤篩選的物件子集。

在下列範例組態中，Amazon S3 會將字首 `Tax` 下的中繼資料變更複寫至包含來源物件的儲存貯體 `amzn-s3-demo-source-bucket`。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "SourceSelectionCriteria": {
                "ReplicaModifications":{
                    "Status": "Enabled"
                }
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-source-bucket"
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

如需使用 建立複寫規則的完整說明 AWS CLI，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。

# 複寫儲存貯體之間的刪除標記
<a name="delete-marker-replication"></a>

根據預設，啟用 S3 複寫且在來源儲存貯體中刪除物件時，Amazon S3 只會在來源儲存貯體中新增刪除標記。此動作有助於保護目的地儲存貯體中的資料，以避免意外或惡意刪除。如果啟用了*刪除標記複寫*，這些標記會複製至目的地儲存貯體，而 Amazon S3 的行為就像在來源和目的地儲存貯體中刪除物件一樣。如需有關刪除標記如何運作的詳細資訊，請參閱 [使用刪除標記](DeleteMarker.md)。

**注意**  
標籤型複寫規則不支援刪除標記複寫。刪除標記複寫也不符合您使用 S3 複寫時間控制 (S3 RTC) 時授予的 15 分鐘服務水準協議 (SLA)。
如果您未使用最新的複寫組態 XML 版本，刪除作業會以不同的方式影響複寫。如需詳細資訊，請參閱[刪除操作對複寫的影響](replication-what-is-isnot-replicated.md#replication-delete-op)。
如果您啟用刪除標記複寫，且來源儲存貯體具有 S3 生命週期過期規則，則 S3 生命週期過期規則新增的刪除標記將不會複寫至目的地儲存貯體。

## 啟用刪除標記複寫
<a name="enabling-delete-marker-replication"></a>

您可以開始使用新的或現有複寫規則的刪除標記複寫。您可以將刪除標記複寫套用至整個儲存貯體或具有特定字首的物件。

若要使用 Amazon S3 主控台啟用刪除標記複寫，請參閱[使用 S3 主控台](replication-walkthrough1.md#enable-replication)。本主題提供當來源和目的地儲存貯體為相同或不同擁有者時，在複寫組態中啟用刪除標記複寫的指示 AWS 帳戶。

若要使用 AWS Command Line Interface (AWS CLI) 啟用刪除標記複寫，您必須將複寫組態新增至`DeleteMarkerReplication`已啟用 的來源儲存貯體，如下列範例組態所示。

在下列範例複寫組態中，刪除標記會複寫至字首 `Tax` 下物件的目的地儲存貯體 `amzn-s3-demo-destination-bucket`。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "DeleteMarkerReplication": {
                "Status": "Enabled"
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

如需透過 建立複寫規則的完整說明 AWS CLI，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。

# 管理或暫停即時複寫
<a name="disable-replication"></a>

即時複寫是在相同或不同的儲存貯體之間自動非同步複製物件 AWS 區域。設定複寫組態後，Amazon S3 會將新建立的物件和物件更新從來源儲存貯體複寫至一個或多個指定的目的地儲存貯體。

您可以使用 Amazon S3 主控台，將複寫規則新增至來源儲存貯體。複寫規則定義要複寫的來源儲存貯體物件，以及用以存放複寫物件的目的地儲存貯體。如需複寫的詳細資訊，請參閱 [複寫區域內和跨區域的物件](replication.md)。

您可以在 Amazon S3 主控台的**複寫**頁面中管理複寫規則。您可以新增、檢視、編輯、啟用、停用或刪除複寫規則。您也可以變更複寫規則的優先順序。如需如何新增儲存貯體之複寫規則的資訊，請參閱 [使用 S3 主控台](replication-walkthrough1.md#enable-replication)。

**使用 Amazon S3 主控台管理儲存貯體的複寫規則**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在**一般用途儲存貯體**索引標籤上，選擇您想要的儲存貯體名稱。

1. 選擇**管理**標籤，然後向下捲動至**複寫規則**。

1. 您可以使用下列方法變更複寫規則：
   + 若要啟用或停用複寫規則，請選擇規則左側的選項按鈕。從**動作**功能表選擇**啟用規則**或**停用規則**。您也可以從**動作**功能表中停用、啟用或刪除儲存貯體中的所有規則。
**注意**  
如果您停用複寫規則，然後重新啟用規則，則當規則重新啟用時，任何未在停用規則時複寫的新物件或變更的物件，都*不會*受到自動複寫。若要複寫這些物件，您必須使用 S3 批次複寫。如需詳細資訊，請參閱[使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。
   + 若要變更規則的優先順序，請選擇規則左側的選項按鈕，然後選擇**編輯規則**。

     設定規則優先順序，以免多項規則範圍內的物件引發衝突。如果發生規則重疊的情況，Amazon S3 會使用規則優先順序來判斷要套用哪一個規則。數字愈高，優先順序愈高。如需有關規則優先順序的詳細資訊，請參閱 [複寫組態檔案元素](replication-add-config.md)。

## 暫停或停止複寫
<a name="replication-pause"></a>

若要暫時暫停複寫並在稍後自動恢復，您可以使用 AWS Fault Injection Service中的 `aws:s3:bucket-pause-replication` 動作。如需詳細資訊，請參閱《AWS Fault Injection Service 使用者指南》**中的 [https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#bucket-pause-replication](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#bucket-pause-replication) 和[暫停 S3 複寫](https://docs.aws.amazon.com/fis/latest/userguide/cross-region-scenario.html#cross-region-scenario-actions-pause-s3-replication)。

若要停止 Amazon S3 中的複寫作業，建議您停用複寫規則。如果您停用複寫規則，然後重新啟用規則，則當規則重新啟用時，任何未在停用規則時複寫的新物件或變更的物件，都*不會*受到自動複寫。若要複寫這些物件，您必須使用 S3 批次複寫。如需詳細資訊，請參閱[使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。

如果您移除授予 Amazon S3 必要許可的 AWS Identity and Access Management (IAM) 角色、 AWS Key Management Service (AWS KMS) 許可或儲存貯體政策許可，複寫也會停止。不過，因為這些方法會導致複寫失敗，所以不建議您使用這些方法。Amazon S3 會將受影響物件的複寫狀態回報為 `FAILED`。如果在稍後還原許可，則標記為 `FAILED` 的物件*不會*自動複寫。若要複寫這些物件，您必須使用 S3 批次複寫。

# 使用批次複寫來複寫現有物件
<a name="s3-batch-replication-batch"></a>

S3 批次複寫不同於即時複寫，後者會跨 Amazon S3 儲存貯體持續自動複寫新物件。反之，系統會隨現有物件的需求進行 S3 批次複寫。您可以使用 S3 批次複寫來複寫下列類型的物件：
+ 在設定複寫組態之前已存在的物件
+ 先前已複寫的物件
+ 複寫失敗的物件

您可以使用批次操作任務，隨需複寫這些物件。

若要開始使用批次複寫，您可以：
+ **啟動新複寫規則或目的地的批次複寫** – 在新複寫批次組態中建立第一個規則，或透過 Amazon S3 主控台將新目的地儲存貯體新增到現有組態時，您可以建立一次性的批次複寫任務。
+ **啟動現有複寫組態的批次複寫** – 您可以透過 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) AWS 、 SDKs 或 Amazon S3 REST API 使用 S3 批次操作來建立新的批次複寫任務。 Amazon S3 

當批次複寫任務完成時，您將收到一份完成報告。如需如何使用報告來檢查任務的詳細資訊，請參閱[追蹤任務狀態和完成報告](batch-ops-job-status.md)。

## S3 批次複寫注意事項
<a name="batch-replication-considerations"></a>

使用 S3 批次複寫之前，請檢閱下列考量事項清單：
+ 來源儲存貯體必須具有現有的複寫組態。若要啟用複寫，請參閱[設定即時複寫概觀](replication-how-setup.md)和[設定即時複寫的範例](replication-example-walkthroughs.md)。
+ 如果您為儲存貯體設定了 S3 生命週期，建議您在批次複寫任務處於活動狀態時停用生命週期規則。執行此動作將確保來源與目的地儲存貯體之間保持同位。否則，這些儲存貯體可能會有所不同，且目的地儲存貯體不會是來源儲存貯體的確切複本。例如，考量以下情境：
  + 您的來源儲存貯體有多個版本的物件，並在該物件上有一個刪除標記。
  + 您的來源和目的地儲存貯體具有生命週期組態，可移除過期的刪除標記。

  在此情況下，批次複寫可能會在複寫物件版本之前，將刪除標記複寫到目的地儲存貯體。此行為可能會導致生命週期組態將刪除標記標示為過期，並在複寫物件版本之前，從目的地儲存貯體移除刪除標記。
+ 您指定執行批次操作任務的 AWS Identity and Access Management (IAM) 角色必須具備必要的許可，才能執行基礎批次複寫操作。如需建立 IAM 角色的詳細資訊，請參閱 [設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。
+ 批次複寫需要一個可由 Amazon S3 產生的資訊清單。產生的資訊清單必須存放在 AWS 區域 與來源儲存貯體相同的 中。如果您選擇不產生資訊清單，則可以提供包含您希望複寫之物件的 Amazon S3 庫存清單報告或 CSV 檔案。如需詳細資訊，請參閱[指定批次複寫任務的資訊清單](#batch-replication-manifest)。
+ 批次複寫不支援透過指定來自目的地儲存貯體之物件的版本 ID，以重新複寫已刪除的物件。若要重新複寫這些物件，您可以使用批次複製 (Batch Copy) 任務將來源物件複製到位。將這些物件複製到位後，會在來源儲存貯體中建立物件的新版本，並自動啟動複寫到目的地的操作。刪除並重新建立目的地儲存貯體不會啟動複寫。

  如需批次複製的詳細資訊，請參閱[使用批次操作複製物件的範例](batch-ops-examples-copy.md)。
+ 如果您在來源儲存貯體上使用複寫規則，請務必將複寫物件所需的適當許可授予附加至複寫規則和的 IAM 角色，以[更新複寫組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-2.html)。IAM 角色必須具有必要許可，才能夠在來源儲存貯體和目的地儲存貯體上執行複寫。
+ 若您在短時間內為同一儲存貯體提交多個批次複寫任務，Amazon S3 將同時執行這些任務。
+ 請注意，若您為兩個不同儲存貯體提交多個批次複寫任務，Amazon S3 可能無法同時執行所有任務。若您超過帳戶一次可以執行的批次複寫任務數量，Amazon S3 將暫停優先順序較低的任務，並處理優先順序較高的任務。在完成優先順序較高的任務後，暫停的任務會再次變更為作用中狀態。
+ S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 儲存類別中存放的物件不支援批次複寫。
+ 若要批次複寫儲存在 Archive Access 或 Deep Archive 儲存層中的 S3 Intelligent-Tiering 物件，您必須發起[還原](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-managing.html#restore-data-from-int-tier-archive)請求，然後等待物件移至經常存取層。
+ 單一批次複寫任務最多可支援 200 億個物件的資訊清單。
+ 如果您使用 S3 批次複寫跨區域複寫資料集，且您的物件之前已將其伺服器端加密類型從 SSE-S3 更新為 SSE-KMS，則您可能需要額外的許可。在來源區域儲存貯體上，您必須擁有 `kms:decrypt` 許可。然後，您將需要目的地區域中儲存貯體的 `kms:decrypt`和 `kms:encrypt`許可。如需詳細資訊，請參閱[複寫加密的物件](replication-config-for-kms-objects.md)。

## 指定批次複寫任務的資訊清單
<a name="batch-replication-manifest"></a>

清單檔案是 Amazon S3 物件，其中包含您希望 Amazon S3 採取行動的物件索引鍵。如果您希望建立批次複寫任務，則必須提供使用者產生的資訊清單，或讓 Amazon S3 根據您的複寫組態產生資訊清單。

如果您提供使用者產生的資訊清單，則必須採用 Amazon S3 庫存清單報告或 CSV 檔案的形式。若您資訊清單中的物件位於啟用版本控制的儲存貯體，您必須指定物件的版本 ID。只有在資訊清單檔案中指定版本 ID 的物件才會受到複寫。若要進一步了解如何指定資訊清單，請參閱[指定資訊清單](batch-ops-create-job.md#specify-batchjob-manifest)。

如果您選擇讓 Amazon S3 代表您產生資訊清單檔案，則列出的物件將使用與來源儲存貯體複寫組態相同的來源儲存貯體、字首和標籤。有了產生的資訊清單，Amazon S3 會複寫您物件的所有符合條件的版本。

**注意**  
如果您選擇讓 Amazon S3 產生資訊清單，資訊清單必須與 AWS 區域 來源儲存貯體存放在相同的 中。

## 批次複寫任務的篩選條件
<a name="batch-replication-filters"></a>

建立批次複寫任務時，您可以選擇指定其他篩選條件，例如物件建立日期和複寫狀態，以縮小任務的範圍。

您可以根據 `ObjectReplicationStatuses` 值來篩選要複寫的物件，方法是提供下列一或多個值：
+ `"NONE"` – 表示 Amazon S3 之前從未嘗試複寫該物件。
+ `"FAILED"` – 表示 Amazon S3 曾嘗試過複寫物件，但失敗。
+ `"COMPLETED"` – 表示 Amazon S3 之前已成功複寫該物件。
+ `"REPLICA"` – 表示此物件是 Amazon S3 從其他來源儲存貯體複寫的複本。

如需複寫狀態的詳細資訊，請參閱[取得複寫狀態資訊](replication-status.md)。

如果您未篩選批次複寫任務，批次操作會嘗試複寫資訊清單中符合複寫組態中規則的所有物件 (無論其 `ObjectReplicationStatus` 為何)，但預設未複寫的某些物件除外。如需詳細資訊，請參閱[使用複寫組態不會複寫什麼項目？](replication-what-is-isnot-replicated.md#replication-what-is-not-replicated)

根據您的目標而定，您可以將 `ObjectReplicationStatuses` 設定為下列其中一個或多個值：
+ 若要僅複寫從未複寫過的現有物件，則僅包含 `"NONE"`。
+ 若要重試僅複寫先前複寫失敗的物件，則僅包含 `"FAILED"`。
+ 若要複寫現有物件並重試複寫先前複寫失敗的物件，請同時包含 `"NONE"` 和 `"FAILED"`。
+ 若要使用已複寫到另一個目的地的物件來回填目的地儲存貯體，請包含 `"COMPLETED"`。
+ 若要複寫之前已複寫過的物件，請包含 `"REPLICA"`。

## 批次複寫完成報告
<a name="batch-replication-completion-report"></a>

當您建立批次複寫任務時，您可以請求 CSV 完成報告。此報告會顯示物件、複寫成功或失敗代碼、輸出，以及描述。如需任務追蹤和完成報告的詳細資訊，請參閱[完成報告](batch-ops-job-status.md#batch-ops-completion-report)。

如需複寫失敗代碼和描述的清單，請參閱[Amazon S3 複寫失敗原因](replication-metrics-events.md#replication-failure-codes)。

如需針對批次複寫進行疑難排解的詳細資訊，請參閱[批次複寫錯誤](replication-troubleshoot.md#troubleshoot-batch-replication-errors)。

## 開始使用批次複寫
<a name="batch-replication-tutorial"></a>

若要進一步了解如何使用批次複寫，請參閱[教學：使用 S3 批次複寫複寫 Amazon S3 儲存貯體中的現有物件](https://aws.amazon.com/getting-started/hands-on/replicate-existing-objects-with-amazon-s3-batch-replication/)。

# 設定 S3 批次複寫的 IAM 角色
<a name="s3-batch-replication-policies"></a>

因為 Amazon S3 批次複寫是一種批次操作任務，所以您必須建立 AWS Identity and Access Management (IAM) 角色以向批次操作授予代您執行動作的許可。您還必須將批次複寫 IAM 政策連接到批次操作 IAM 角色。

使用下列程序建立一個政策和一個 IAM 角色，該角色授予批次操作啟動批次複寫任務的許可。

**建立批次複寫政策**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 **Access management** (存取管理) 下，請選擇 **Policies** (政策)。

1. 選擇 **Create policy** (建立政策)。

1. 在**指定許可**頁面上，選擇 **JSON**。

1. 請依據您的資訊清單是由 Amazon S3 產生，還是由您提供自有的資訊清單，以插入下列其中一個政策。如需資訊清單的詳細資訊，請參閱 [指定批次複寫任務的資訊清單](s3-batch-replication-batch.md#batch-replication-manifest)。

   在使用這些政策之前，請以您的複寫來源儲存貯體、資訊清單儲存貯體和完成報告儲存貯體的名稱取代下列政策中的 `user input placeholders`。
**注意**  
根據您是產生資訊清單還是提供資訊清單而定，批次複寫的 IAM 角色會需要不同的許可，因此請務必從下列範例選擇適當的政策。

**使用和儲存 Amazon S3 產生的資訊清單時的政策**

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Action": [
               "s3:InitiateReplication"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
         },
         {
            "Action": [
               "s3:GetReplicationConfiguration",
               "s3:PutInventoryConfiguration"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-source-bucket"
            ]
         },
         {
            "Action": [
               "s3:GetObject",
               "s3:GetObjectVersion"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
         },
         {
            "Effect": "Allow",
            "Action": [
               "s3:PutObject"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
               "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"    
            ]
         }
      ]
   }
   ```

------

**使用使用者提供的資訊清單時的政策**

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Action": [
               "s3:InitiateReplication"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
         },
         {
            "Action": [
               "s3:GetObject",
               "s3:GetObjectVersion"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
         },
         {
            "Effect": "Allow",
            "Action": [
               "s3:PutObject"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"    
            ]
         }
      ]
   }
   ```

------

1. 選擇**下一步**。

1. 為政策指定名稱，然後選擇**建立政策**。

**為批次複寫建立 IAM 角色**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 **Access management** (存取管理) 下，請選擇 **Roles** (角色)。

1. 選擇建**立角色**。

1. 選擇 **AWS 服務** 作為信任的實體類型。在**使用案例**區段中，選擇 **S3** 作為服務，並選擇 **S3 Batch Operations** 作為使用案例。

1. 選擇**下一步**。**新增許可**頁面隨即出現。在搜尋方塊中，搜尋您在上一個程序中建立的政策。選取政策名稱旁的核取方塊，然後選擇**下一步**。

1. 在**名稱、檢閱和建立**頁面上，為您的 IAM 角色指定名稱。

1. 在**步驟 1：信任身分**區段中，確認您的 IAM 角色正在使用下列信任政策：

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"batchoperations.s3.amazonaws.com"
            },
            "Action":"sts:AssumeRole"
         }
      ]
   }
   ```

------

1. 在 **Step 2: Add permissions** 區段中，確認您的 IAM 角色正在使用您先前建立的政策。

1. 選擇建**立角色**。

# 為新複寫規則或目的地建立批次複寫任務
<a name="s3-batch-replication-new-config"></a>

在 Amazon S3 中，即時複寫不會複寫在建立複寫組態之前已存在於來源儲存貯體中的任何物件。即時複寫只會在建立複寫組態後，自動複寫寫入儲存貯體的新物件和更新的物件。若要複寫現有的物件，您可以使用 S3 批次複寫來隨需複寫這些物件。

當您在新即時複寫組態中建立第一個規則或透過 Amazon S3 主控台將新目的地儲存貯體新增至現有複寫組態時，您可選擇建立「批次複寫」任務。您可以使用此批次複寫任務，將來源儲存貯體中的現有物件複寫至目的地儲存貯體。

若要將「批次複寫」用於不新增目的地儲存貯體的現有組態，請參閱[為現有複寫規則建立批次複寫任務](s3-batch-replication-existing-config.md)。

**先決條件**  
在建立批次複寫任務前，您必須建立批次操作 AWS Identity and Access Management (IAM) 角色以授予 Amazon S3 代您執行動作的許可。如需詳細資訊，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

## 透過 Amazon S3 主控台將批次複寫用於新的複寫規則或目的地
<a name="batch-replication-new-config-console"></a>

當您在新複寫組態中建立第一個規則或透過 Amazon S3 主控台將新目的地儲存貯體新增至現有組態時，您可選擇建立「批次複寫」任務來複寫來源儲存貯體中的現有物件。

**在建立或更新複寫組態時建立批次複寫任務**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在**一般用途儲存貯體**清單中，選擇儲存貯體的名稱，其中包含您要複寫的物件。

1. 若要建立新的複寫規則或編輯現有規則，請選擇**管理**，然後向下捲動至**複寫規則**：
   + 如要建立新的複寫規則，請選擇 **Create replication rule** (建立複寫規則)。如需如何設定基本複寫規則的範例，請參閱[設定即時複寫的範例](replication-example-walkthroughs.md)。
   + 若要編輯現有的複寫規則，請選取規則旁的選項按鈕，然後選擇**編輯規則**。

1. 建立新的複寫規則或編輯現有複寫規則的目的地，然後選擇 **Save** (儲存)。

   在您於新的複寫組態中建立第一個規則後，或編輯現有組態以新增目的地之後，**Replicate existing objects?** (複寫現有物件嗎？) 對話方塊隨即顯示，為您提供了建立「批次複寫」任務的選項。

1. 如果您要立即建立並執行此任務，請選擇**是，請複寫現有物件**。

   如要於稍後建立批次複寫任務，請選擇**不，請勿複寫現有物件**。

1. 如果您選擇**是，請複寫現有物件**，則會顯示**建立批次操作任務**頁面。S3 批次複寫任務具有下列設定：  
**任務執行選項**  
若您希望立即執行「S3 批次複寫」任務，您可選擇**在準備就緒時自動執行任務**。若要於稍後執行任務，請選擇**準備就緒時等待執行任務**。  
如果選擇**在準備就緒時自動執行任務**，則無法建立和儲存批次操作資訊清單。若要儲存批次操作資訊清單，請選擇**準備就緒時等待執行任務**。  
**批次操作資訊清單**  
如果您選擇**準備就緒時等待執行任務**，則**批次操作資訊清單**區段隨即出現。資訊清單是您希望對其執行指定動作之所有物件的清單。您可以選擇儲存資訊清單。與 S3 庫存檔案類似，資訊清單將儲存為 CSV 檔案並存放在儲存貯體中。若要進一步了解批次操作資訊清單，請參閱[指定資訊清單](batch-ops-create-job.md#specify-batchjob-manifest)。  
**完成報告**  
S3 批次操作會為資訊清單中指定的每個物件執行一個任務。完成報告可讓您以合併形式輕鬆檢視任務結果，無需進行額外設定。您可以請求所有任務或僅失敗任務的完成報告。若要進一步了解完成報告，請參閱[完成報告](batch-ops-job-status.md#batch-ops-completion-report)。  
**許可**  
複寫失敗的最常見原因之一是提供 AWS Identity and Access Management (IAM) 角色的許可不足。如需建立此角色的詳細資訊，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。請確定建立或選擇具有批次複寫所需許可的 IAM 角色。

1. 選擇**儲存**。

# 為現有複寫規則建立批次複寫任務
<a name="s3-batch-replication-existing-config"></a>

在 Amazon S3 中，即時複寫不會複寫在建立複寫組態之前已存在於來源儲存貯體中的任何物件。即時複寫只會在建立複寫組態後，自動複寫寫入儲存貯體的新物件和更新的物件。若要複寫現有的物件，您可以使用 S3 批次複寫來隨需複寫這些物件。

您可以使用 AWS SDKs、 AWS Command Line Interface (AWS CLI) 或 Amazon S3 主控台，為現有的複寫組態設定 S3 批次複寫。 Amazon S3 如需批次複寫的概觀，請參閱[使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。

當批次複寫任務完成時，您將收到一份完成報告。如需使用報告檢查任務的詳細資訊，請參閱[追蹤任務狀態和完成報告](batch-ops-job-status.md)。

**先決條件**  
在建立批次複寫任務前，您必須建立批次操作 AWS Identity and Access Management (IAM) 角色以授予 Amazon S3 代您執行動作的許可。如需詳細資訊，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

## 使用 S3 主控台
<a name="batch-replication-existing-config-console"></a>

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Batch Operations** (批次操作)。

1. 選擇**建立任務**。

1. 確認 **AWS 區域** 區段顯示您要建立任務的區域。

1. 在**資訊清單**區段中，指定您要使用的資訊清單格式。資訊清單是您希望對其執行指定動作之所有物件的清單。若要進一步了解批次操作資訊清單，請參閱[指定資訊清單](batch-ops-create-job.md#specify-batchjob-manifest)。
   + 如果您已準備好資訊清單，請選擇 **S3 inventory report (manifest.json)** (S3 庫存報告 (manifest.json)) 或 **CSV**。如果您的資訊清單位於啟用版本控制的儲存貯體中，您可以指定資訊清單的版本 ID。如果您未指定版本 ID，批次操作會使用資訊清單的目前版本。如需建立資訊清單的詳細資訊，請參閱[指定資訊清單](batch-ops-create-job.md#specify-batchjob-manifest)。
**注意**  
若您資訊清單中的物件位於啟用版本控制的儲存貯體，您必須指定物件的版本 ID。如需詳細資訊，請參閱[指定資訊清單](batch-ops-create-job.md#specify-batchjob-manifest)。
   + 若要根據複寫組態建立資訊清單，請選擇 **Create manifest using S3 Replication configuration** (使用 S3 複寫組態建立資訊清單)。接著請選擇複寫組態的來源儲存貯體。

1. (選用) 如果您選擇 **使用 S3 複寫組態建立資訊清單**，您可以包含其他篩選條件，例如物件建立日期和複寫狀態。如需如何依照複寫狀態進行篩選的範例，請參閱[指定批次複寫任務的資訊清單](s3-batch-replication-batch.md#batch-replication-manifest)。

1. (選用) 如果您選擇 **使用 S3 複寫組態建立資訊清單**，則可以儲存產生的資訊清單。若要儲存資訊清單，請選取**儲存批次操作資訊清單**。然後指定資訊清單的目的地儲存貯體，然後選擇是否要加密資訊清單。
**注意**  
產生的資訊清單必須存放在 AWS 區域 與來源儲存貯體相同的 中。

1. 選擇**下一步**。

1. 在**操作**頁面上，選擇**複寫**，然後選擇**下一步**。

1. (選用) 提供 **Description** (描述)。

1. 視需要調整任務的 **Priority** (優先順序)。數字愈大表示優先順序愈高。Amazon S3 會嘗試在優先順序較低的任務之前，先執行優先順序較高的任務。如需任務優先順序的詳細資訊，請參閱 [指派任務優先順序](batch-ops-job-priority.md)。

1. (選用) 產生完成報告。若要產生此報告，請選取**產生完成報告**。

   如果選擇產生完成報告，則必須選擇報告 **Failed tasks only** (僅限失敗的任務) 或者 **All tasks** (所有任務)，並為報告提供目的地儲存貯體。

1. 在**許可**區段中，請確定您選擇的 IAM 角色具有批次複寫所需的許可。複寫失敗的最常見原因之一，是所提供 IAM 角色中的許可不足。如需建立此角色的詳細資訊，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

1. (選用) 將任務標籤新增到批次複寫任務。

1. 選擇**下一步**。

1. 請檢閱您的任務組態，然後選擇**建立任務**。

## AWS CLI 搭配 S3 資訊清單使用
<a name="batch-replication-existing-config-cli"></a>

下列範例 `create-job` 命令會使用 S3 為 AWS 帳戶 `111122223333` 產生的資訊清單，建立 S3 批次複寫任務。此範例會複寫現有物件和先前複寫失敗的物件。如需依照複寫狀態進行篩選的相關資訊，請參閱[指定批次複寫任務的資訊清單](s3-batch-replication-batch.md#batch-replication-manifest)。

若要使用此命令，請以您自己的資訊取代 *`user input placeholders`*。使用您之前建立之角色的 IAM 角色，取代 IAM 角色 `role/batch-Replication-IAM-policy`。如需詳細資訊，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

```
aws s3control create-job --account-id 111122223333 \ 
--operation '{"S3ReplicateObject":{}}' \ 
--report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",\ 
"Prefix":"batch-replication-report", \ 
"Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ 
--manifest-generator '{"S3JobManifestGenerator": {"ExpectedBucketOwner": "111122223333", \ 
"SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket", \ 
"EnableManifestOutput": false, "Filter": {"EligibleForReplication": true, \ 
"ObjectReplicationStatuses": ["NONE","FAILED"]}}}' \ 
--priority 1 \ 
--role-arn arn:aws:iam::111122223333:role/batch-Replication-IAM-policy \ 
--no-confirmation-required \ 
--region source-bucket-region
```

**注意**  
您必須從與複寫來源儲存貯體 AWS 區域 相同的 啟動任務。

成功啟動批次複寫任務後，您將收到任務 ID 做為回應。您可使用下列 `describe-job` 命令來監控此任務。若要使用此命令，請以您自己的資訊取代 *`user input placeholders`*。

```
aws s3control describe-job --account-id 111122223333 --job-id job-id --region source-bucket-region
```

## AWS CLI 搭配使用者提供的資訊清單使用
<a name="batch-replication-existing-config-cli-customer-manifest"></a>

下列範例會使用使用者為 AWS 帳戶 `111122223333` 定義的資訊清單，建立 S3 批次複寫任務。若您資訊清單中的物件位於啟用版本控制的儲存貯體，您必須指定物件的版本 ID。只有在清單檔案中指定版本 ID 的物件，才會被複寫。如需建立資訊清單的詳細資訊，請參閱[指定資訊清單](batch-ops-create-job.md#specify-batchjob-manifest)。

若要使用此命令，請以您自己的資訊取代 *`user input placeholders`*。使用您之前建立之角色的 IAM 角色，取代 IAM 角色 `role/batch-Replication-IAM-policy`。如需詳細資訊，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

```
aws s3control create-job --account-id 111122223333 \ 
--operation '{"S3ReplicateObject":{}}' \
--report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",\
"Prefix":"batch-replication-report", \
"Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \
--manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820",\
"Fields":["Bucket","Key","VersionId"]},\
"Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest.csv",\
"ETag":"Manifest Etag"}}' \
--priority 1 \
--role-arn arn:aws:iam::111122223333:role/batch-Replication-IAM-policy \
--no-confirmation-required \
--region source-bucket-region
```

**注意**  
您必須從與複寫來源儲存貯體 AWS 區域 相同的 啟動任務。

成功啟動批次複寫任務後，您將收到任務 ID 做為回應。您可使用下列 `describe-job` 命令來監控此任務。

```
aws s3control describe-job --account-id 111122223333 --job-id job-id --region source-bucket-region
```

# 故障排除複寫
<a name="replication-troubleshoot"></a>

本節列出「Amazon S3 複寫」的疑難排解提示，以及「S3 批次複寫」錯誤的相關資訊。

**Topics**
+ [

## S3 複寫的疑難排解提示
](#troubleshoot-replication-tips)
+ [

## 批次複寫錯誤
](#troubleshoot-batch-replication-errors)

## S3 複寫的疑難排解提示
<a name="troubleshoot-replication-tips"></a>

在您設定複寫之後，如果物件複本未出現在目的地儲存貯體中，請使用這些故障診斷技巧以識別並修正問題。
+ 大部分的物件會在 15 分鐘內複寫。Amazon S3 複寫物件所需的時間長短取決於幾個因素，包括來源和目的地區域對，以及物件的大小。若是大型物件，最長可能需要數小時的複寫時間。如需複寫時間的可見性，您可以[使用 S3 複寫時間控制 (S3 RTC)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-time-control.html#enabling-replication-time-control)。

  如果要複寫的物件很大，請等待一段時間，然後查看其是否出現在目的地中。您也可以檢查來源物件的複寫狀態。如果物件複寫狀態為 `PENDING`，則表示 Amazon S3 尚未完成複寫。如果物件複寫狀態為 `FAILED`，請檢查來源儲存貯體中所設的複寫組態。

  此外，若要在複寫期間接收失敗的相關資訊，您可以設定「Amazon S3 事件通知」複寫以接收失敗事件。如需詳細資訊，請參閱[使用 Amazon S3 事件通知接收複寫失敗事件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-metrics.html)。
+ 若要檢查物件的複寫狀態，您可以呼叫 `HeadObject` API 操作。`HeadObject` API 操作會傳回物件的 `PENDING`、`COMPLETED` 或 `FAILED` 複寫狀態。在針對 `HeadObject` API 呼叫的回應時，系統會在 `x-amz-replication-status` 標頭中傳回複寫狀態。
**注意**  
若要執行 `HeadObject`，您必須對您正要請求的儲存貯體具有讀取權。`HEAD` 請求具有與 `GET` 請求相同的選項，而不需執行 `GET` 操作。例如，若要使用 AWS Command Line Interface (AWS CLI) 執行`HeadObject`請求，您可以執行下列命令。以您自己的資訊取代 `user input placeholders`。  

  ```
  aws s3api head-object --bucket amzn-s3-demo-source-bucket --key index.html
  ```
+ 如果 `HeadObject` 傳回具有 `FAILED` 複寫狀態的物件，您可以使用「S3 批次複寫」來複寫這些失敗的物件。如需詳細資訊，請參閱[使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。或者，您也可以將失敗的物件重新上傳至來源儲存貯體，這樣會啟動新物件的複寫。
+ 在來源儲存貯體中的複寫組態中，驗證下列項目：
  + 目的地儲存貯體的 Amazon Resource Name (ARN) 正確。
  + 金鑰名稱前綴正確。例如，如果您設定組態來複寫具有前綴 `Tax` 的物件，則只會複寫具有 `Tax/document1` 或 `Tax/document2` 等金鑰名稱的物件。不會複寫具有金鑰名稱 `document3` 的物件。
  + 複寫規則的狀態為 `Enabled`。
+ 在複寫組態中確認未在任何儲存貯體上暫停版本控制。來源與目的地儲存貯體都必須啟用版本控制。
+ 如果複寫規則設定為**將物件擁有權變更為目的地儲存貯體擁有者**，則用於複寫的 AWS Identity and Access Management (IAM) 角色必須具有 `s3:ObjectOwnerOverrideToBucketOwner`許可。此許可是在資源 (在此情況下，指的是目的地儲存貯體) 上授予。例如，下列 `Resource` 陳述式說明如何在目的地儲存貯體上授予此許可：

  ```
  {
    "Effect":"Allow",
    "Action":[
      "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
  }
  ```
+ 如果目的地儲存貯體是由另一個帳戶所擁有，則目的地儲存貯體的擁有者也須透過目的地儲存貯體政策，將 `s3:ObjectOwnerOverrideToBucketOwner` 許可授予來源儲存貯體擁有者。若要使用下列儲存貯體政策範例，請以您自己的資訊取代 `user input placeholders`：

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy1644945280205",
    "Statement": [
      {
        "Sid": "Stmt1644945277847",
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
        },
        "Action": [
          "s3:ReplicateObject",
          "s3:ReplicateTags",
          "s3:ObjectOwnerOverrideToBucketOwner"
        ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
      }
    ]
  }
  ```

------
**注意**  
如果目的地儲存貯體的物件擁有權設定包含**儲存貯體擁有者強制執行**，則您不需要在複寫規則中更新設定，以**將物件擁有權變更為目的地儲存貯體擁有者**。依預設，物件擁有權變更將會發生。如需變更複本擁有權的詳細資訊，請參閱[變更複本擁有者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-change-owner.html)。
+ 如果您在跨帳戶案例中設定複寫組態，其中來源和目的地儲存貯體是由不同的 擁有 AWS 帳戶，則無法將目的地儲存貯體設定為申請者付款儲存貯體。如需詳細資訊，請參閱[使用儲存體傳輸和用量的申請者付款一般用途儲存貯體](RequesterPaysBuckets.md)。
+ 如果儲存貯體的來源物件使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 進行加密，則必須將複寫規則設定為包含 AWS KMS加密物件。請務必在 Amazon S3 主控台的**加密**設定下選取**複寫使用 AWS KMS加密的物件**。然後，選取用於加密目的地物件的 AWS KMS 金鑰。
**注意**  
如果目的地儲存貯體位於不同的帳戶中，請指定目的地帳戶擁有 AWS KMS 的客戶受管金鑰。請勿使用預設的 Amazon S3 受管金鑰 (`aws/s3`)。使用預設金鑰會搭配來源帳戶所擁有的 Amazon S3 受管金鑰加密物件，藉以防止物件與另一個帳戶共用。因此，目的地帳戶將無法存取目的地儲存貯體中的物件。

  若要使用屬於目的地帳戶的 AWS KMS 金鑰來加密目的地物件，目的地帳戶必須將 `kms:GenerateDataKey`和 `kms:Encrypt`許可授予 KMS 金鑰政策中的複寫角色。若要在您的 KMS 金鑰政策中使用下列範例，請以您自己的資訊取代 `user input placeholders`：

  ```
  {    
      "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
      },
      "Action": ["kms:GenerateDataKey", "kms:Encrypt"],
      "Resource": "*"
  }
  ```

  如果您對 AWS KMS 金鑰政策中的 `Resource` 陳述式使用星號 (`*`)，則此政策會將使用 KMS 金鑰的許可僅授予複寫角色。此政策不允許複寫角色提升其許可。

  依預設，KMS 金鑰政策會授予根使用者金鑰的完整許可。這些許可可以委派給相同帳戶中的其他使用者。除非來源 KMS 金鑰政策中有 `Deny` 陳述式，否則使用 IAM 政策將複寫角色許可授予來源 KMS 金鑰就夠了。
**注意**  
限制存取特定 CIDR 範圍、虛擬私有雲端 (VPC) 端點或 S3 存取點的 KMS 金鑰政策可能會導致複寫失敗。

  如果來源或目的地 KMS 金鑰根據加密內容授予許可，請確認已針對儲存貯體開啟「Amazon S3 儲存貯體金鑰」。如果儲存貯體已開啟「S3 儲存貯體」金鑰，則加密內容必須是儲存貯體層級資源，如下所示：

  ```
  "kms:EncryptionContext:arn:aws:arn": [
       "arn:aws:s3:::amzn-s3-demo-source-bucket"
       ]
  "kms:EncryptionContext:arn:aws:arn": [
       "arn:aws:s3:::amzn-s3-demo-destination-bucket"
       ]
  ```

  除了 KMS 金鑰政策授予的許可之外，來源帳戶還必須將下列最低許可新增至複寫角色的 IAM 政策：

  ```
  {
      "Effect": "Allow",
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": [
          "Source-KMS-Key-ARN"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "kms:GenerateDataKey",
          "kms:Encrypt"
      ],
      "Resource": [
          "Destination-KMS-Key-ARN"
      ]
  }
  ```
**重要**  
如果您使用 S3 批次複寫來跨區域複寫資料集，且物件先前已將其伺服器端加密類型從 SSE-S3 更新為 SSE-KMS，則您可能需要額外的許可。在來源區域儲存貯體上，您必須擁有 `kms:decrypt` 許可。然後，您將需要目的地區域中儲存貯體的 `kms:decrypt`和 `kms:encrypt`許可。

  如需如何複寫使用 加密之物件的詳細資訊 AWS KMS，請參閱[複寫加密物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-4.html)。
+ 如果目的地儲存貯體是由另一個儲存貯體擁有 AWS 帳戶，請確認儲存貯體擁有者在目的地儲存貯體上有儲存貯體政策，允許來源儲存貯體擁有者複寫物件。如需範例，請參閱 [設定不同帳戶內的儲存貯體複寫](replication-walkthrough-2.md)。
+ 若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。
+ 如果您的物件在您驗證了許可之後仍未複寫，請檢查下列位置是否有任何明確的 `Deny` 陳述式：
  + 來源或目的地儲存貯體政策中的 `Deny` 陳述式。如果儲存貯體政策拒絕存取下列任何動作的複寫角色，則複寫會失敗：

    來源儲存貯體：

    ```
    1.            "s3:GetReplicationConfiguration",
    2.            "s3:ListBucket",
    3.            "s3:GetObjectVersionForReplication",
    4.            "s3:GetObjectVersionAcl",
    5.            "s3:GetObjectVersionTagging"
    ```

    目的地儲存貯體：

    ```
    1.            "s3:ReplicateObject",
    2.            "s3:ReplicateDelete",
    3.            "s3:ReplicateTags"
    ```
  + 附加至 IAM 角色的 `Deny` 陳述式或許可界限可能會導致複寫失敗。
  + `Deny` 連接到來源或目的地帳戶 AWS Organizations 的服務控制政策 (SCPs) 中的 陳述式可能會導致複寫失敗。
  + `Deny` AWS Organizations 資源控制政策 (RCPs) 中連接到來源或目的地儲存貯體的 陳述式可能會導致複寫失敗。
+ 如果目的地儲存貯體中未出現物件複本，可能是下列問題阻礙了複寫作業：
  + 如果來源儲存貯體中的物件是由另一個複寫組態所建立的複本，則 Amazon S3 不會複寫該複本。例如，如果您將複寫組態從儲存貯體 A 設定到儲存貯體 B，再設定到儲存貯體 C，則 Amazon S3 不會將儲存貯體 B 中的物件複本複寫至儲存貯體 C。
  + 來源儲存貯體擁有者可以授予其他上傳物件的 AWS 帳戶 許可。根據預設，來源儲存貯體擁有者不具其他帳戶所建立之物件的任何許可。複寫組態只會複寫來源儲存貯體擁有者具備存取許可的物件。為了避免此問題，來源儲存貯體擁有者可以授予其他 AWS 帳戶 許可，以有條件地建立物件，並需要這些物件的明確存取許可。如需政策範例，請參閱 [授予跨帳戶許可，以在確保儲存貯體擁有者具有完全控制時上傳物件](example-bucket-policies.md#example-bucket-policies-acl-2)。
+ 假設您在複寫組態中新增一個規則，以複寫含特定標籤的物件子集。在此情況下，您必須於建立物件時指派特定標籤金鑰與值，以便 Amazon S3 複寫物件。如果您先建立物件，之後才將標籤新增至現有物件，Amazon S3 就不會複寫物件。
+ 使用「Amazon S3 事件通知」，即可通知您物件未複寫至其目的地 AWS 區域的情況。Amazon S3 事件通知可透過 Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS) 或 取得 AWS Lambda。如需詳細資訊，請參閱[使用 Amazon S3 事件通知接收複寫失敗事件](replication-metrics-events.md)。

  您也可以使用「Amazon S3 事件通知」，以檢視複寫失敗原因。若要檢閱失敗原因的清單，請參閱 [Amazon S3 複寫失敗原因](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-failure-codes.html)。

## 批次複寫錯誤
<a name="troubleshoot-batch-replication-errors"></a>

若要針對未複寫到目的地儲存貯體的物件進行疑難排解，請針對用來建立「批次複寫」任務的儲存貯體、複寫角色和 IAM 角色檢查不同類型的許可。此外，請務必檢查儲存貯體的「封鎖公開存取」設定和「S3 物件擁有權」設定。

如需使用批次操作的其他疑難排解秘訣，請參閱[對 S3 Batch Operations 進行故障診斷](troubleshooting-batch-operations.md)。

如果您已設定複寫，且物件未複寫，請參閱[為什麼在設定儲存貯體之間的複寫時，我的 Amazon S3 物件不複寫？](https://repost.aws/knowledge-center/s3-troubleshoot-replication) AWS re:Post 知識中心的 。

使用「批次複寫」時，您可能會遇到下列其中一個錯誤：
+ 產生資訊清單時找不到符合篩選條件的金鑰。

  此錯誤可能的發生原因如下：
  + 來源儲存貯體中的物件存放在 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 儲存類別。

    若要在這些物件上使用「批次複寫」，請先在「批次操作」任務中使用**還原** (`S3InitiateRestoreObjectOperation`) 操作，將它們還原到「S3 Standard」儲存類別。如需詳細資訊，請參閱 [還原已封存的物件](restoring-objects.md) 和[還原物件 (批次作業)](batch-ops-initiate-restore-object.md)。在還原了物件之後，您可以使用「批次複寫」任務來複寫它們。
  + 提供的篩選條件不符合來源儲存貯體中的任何有效物件。

    請驗證並更正篩選條件。例如，在批次複寫規則中，篩選條件會尋找來源儲存貯體中字首為 `Tax/` 的所有物件。如果輸入的字首名稱不正確，開頭和結尾 `/Tax/` 存在斜線，而不是只存在於結尾，則系統會找不到 S3 物件。若要解決錯誤，請在複寫規則中更正字首，在此情況下是從 `/Tax/` 更正至 `Tax/`。
+ 批次操作狀態為失敗，原因如下：無法將任務報告寫入報告儲存貯體。

  如果用於「批次操作」任務的 IAM 角色無法將完成報告放入您建立任務時所指定的位置中，就會發生此錯誤。若要解決此錯誤，請檢查 IAM 角色是否對要儲存「批次操作」完成報告的儲存貯體具有 `s3:PutObject` 許可。建議您將報告交付至與來源儲存貯體不同的儲存貯體。
+ 批次操作已完成但失敗，失敗總數不是 0。

  如果正在執行的「批次複寫」任務發生物件許可不足問題，則會發生這個錯誤。如果您針對「批次複寫」任務使用複寫規則，請確定用於複寫的 IAM 角色具有適當的許可，可從來源或目的地儲存貯體中存取物件。您也可以檢查[批次複寫完成報告](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-batch-replication-batch.html#batch-replication-completion-report)，以檢閱特定的 [Amazon S3 複寫失敗原因](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-failure-codes.html)。
+ 批次任務已成功執行，但目的地儲存貯體中預期的物件數目不相同。

  當「批次複寫」任務中提供的清單檔案中所列的物件與您在建立任務時選取的篩選條件之間若有不符時，就會發生這個錯誤。當來源儲存貯體中的物件不符合任何複寫規則，且未包含在產生的清單檔案中時，您可能也會收到此訊息。

### 將新的複寫規則新增至現有複寫組態之後，發生「批次操作」失敗
<a name="new-replication-rule"></a>

「批次操作」會嘗試針對來源儲存貯體的複寫組態中的每個規則執行現有的物件複寫。如果任何現有的複寫規則發生問題，可能會發生失敗。

「批次操作」任務的完成報告會說明任務失敗原因。如需常見錯誤的清單，請參閱 [Amazon S3 複寫失敗原因](replication-metrics-events.md#replication-failure-codes)。

# 使用指標、事件通知和狀態監控複寫
<a name="replication-metrics"></a>

您可以透過下列機制來監控即時複寫組態和 S3 批次複寫任務：
+ **S3 複寫指標** – 當您啟用 S3 複寫指標時，Amazon CloudWatch 會發出指標，以供您在複寫規則層級追蹤位元組等待複寫、操作等待複寫和複寫延遲。您可以透過 Amazon S3 主控台和 Amazon CloudWatch 主控台檢視 S3 複寫指標。在 Amazon S3 主控台中，您可以在來源儲存貯體的**指標**索引標籤中檢視這些指標。如需有關 S3 複寫指標的詳細資訊，請參閱[使用 S3 複寫指標](repl-metrics.md)。
+ **S3 Storage Lens 指標** – 除了 S3 複寫指標之外，您還可以使用 S3 Storage Lens 儀表板提供的複寫相關資料保護指標。例如，如果您在 S3 Storage Lens 中使用免費指標，您可以看到從來源儲存貯體複寫的位元組總數，或從來源儲存貯體複寫的物件計數等指標。

  若要稽核整體複寫態勢，您可以在 S3 Storage Lens 中啟用進階指標。透過 S3 Storage Lens 中的進階指標，您可以查看您有多少不同類型的複寫規則，包括複寫目的地無效的複寫規則計數。

  如需在 S3 Storage Lens 中使用複寫指標的詳細資訊，請參閱[在 S3 Storage Lens 儀表板上檢視複寫指標](viewing-replication-metrics-storage-lens.md)。
+ **S3 事件通知** – S3 事件通知可在物件未複寫至目的地 AWS 區域 或未在特定閾值內複寫物件時，於執行個體中的物件層級通知您。S3 事件通知可提供下列複寫事件類型：`s3:Replication:OperationFailedReplication`、`s3:Replication:OperationMissedThreshold`、`s3:Replication:OperationReplicatedAfterThreshold` 和 `s3:Replication:OperationNotTracked`。

  Amazon S3 事件可透過 Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS) 或 取得 AWS Lambda。如需詳細資訊，請參閱[使用 Amazon S3 事件通知接收複寫失敗事件](replication-metrics-events.md)。
+ **複寫狀態值** – 您也可以擷取物件的複寫狀態。複寫狀態可協助您判斷正在複寫之物件的目前狀態。來源物件的複寫狀態將會傳回 `PENDING`、`COMPLETED` 或 `FAILED`。複本的複寫狀態將會傳回 `REPLICA`。

  您也可以在建立 S3 批次複寫任務時使用複寫狀態值。例如，您可以使用這些狀態值來複寫從未複寫或複寫失敗的物件。

  如需擷取物件複寫狀態的詳細資訊，請參閱[取得複寫狀態資訊](replication-status.md)。如需搭配使用這些值與批次複寫的詳細資訊，請參閱[批次複寫任務的篩選條件](s3-batch-replication-batch.md#batch-replication-filters)。

**Topics**
+ [

# 使用 S3 複寫指標
](repl-metrics.md)
+ [

# 在 S3 Storage Lens 儀表板上檢視複寫指標
](viewing-replication-metrics-storage-lens.md)
+ [

# 使用 Amazon S3 事件通知接收複寫失敗事件
](replication-metrics-events.md)
+ [

# 取得複寫狀態資訊
](replication-status.md)

# 使用 S3 複寫指標
<a name="repl-metrics"></a>

S3 複寫指標提供了複寫組態中複寫規則的詳細指標。透過複寫指標，您可以透過追蹤擱置的位元組、擱置中的操作、複寫失敗的操作和複寫延遲來監控每分鐘進度。

**注意**  
S3 複寫指標的計費方式與 Amazon CloudWatch 自訂指標相同。如需詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。
使用 S3 複寫時間控制時，當您在各自的複寫規則上啟用 S3 RTC 之後，Amazon CloudWatch 會在 15 分鐘內開始報告複寫指標。

當您啟用 S3 複寫時間控制 (S3 RTC) 時，系統會自動開啟 S3 複寫指標。您也可以在[建立或編輯規則](replication-walkthrough1.md)時，獨立於 S3 RTC 啟用 S3 複寫指標。S3 RTC 包含其他功能，例如服務水準協議 (SLA) 和遺漏臨界值的通知。如需詳細資訊，請參閱[使用 S3 複寫時間控制來滿足合規要求](replication-time-control.md)。

啟用 S3 複寫指標後，Amazon S3 複寫指標會將下列指標發佈至 Amazon CloudWatch。CloudWatch 指標是盡力交付。


| 指標名稱 | 指標描述 | 此指標會套用至哪些物件？ | 此指標發佈於哪個區域？ | 如果刪除目的地儲存貯體，是否仍然會發佈此指標？ | 如果未進行複寫，是否仍然發佈此指標？ | 
| --- | --- | --- | --- | --- | --- | 
| **位元組等待複寫** |  針對指定複寫規則等待複寫的物件位元組總數。  | 此指標僅適用於使用 S3 跨區域複寫 (S3 CRR) 或 S3相同區域複寫 (S3 SRR) 複寫的新物件。 | 此指標會發佈在目的地儲存貯體的所在區域中。 | 否 | 是 | 
| **複寫延遲** |  針對指定複寫規則，複寫目的地儲存貯體落後來源儲存貯體的秒數上限。  | 此指標僅適用於使用 S3 CRR 或 S3 SRR 複寫的新物件。 | 此指標會發佈在目的地儲存貯體的所在區域中。 | 否 | 是 | 
| **操作等待複寫** |  針對指定複寫規則等待複寫的操作數目。此指標會追蹤與物件、刪除標記、標籤、存取控制清單 (ACL) 和 S3 物件鎖定相關的操作。  | 此指標僅適用於使用 S3 CRR 或 S3 SRR 複寫的新物件。 | 此指標會發佈在目的地儲存貯體的所在區域中。 | 否 | 是 | 
| **複寫失敗的操作** |  針對指定複寫規則的複寫失敗操作數目。此指標會追蹤與物件、刪除標記、標籤、存取控制清單 (ACL) 和物件鎖定相關的操作。 **複寫失敗的操作**會追蹤每分鐘彙總的 S3 複寫失敗。若要識別複寫失敗的特定物件及其失敗原因，請在 Amazon S3 事件通知中訂閱 `OperationFailedReplication` 事件。如需詳細資訊，請參閱[使用 Amazon S3 事件通知接收複寫失敗事件](replication-metrics-events.md)。  |  此指標適用於使用 S3 CRR 或 S3 SRR 複寫的新物件，以及使用 S3 批次複寫的現有物件。  如果 S3 批次複寫任務完全無法執行，則系統不會將指標傳送至 Amazon CloudWatch。例如，若您沒有執行 S3 批次複寫任務的必要許可，或者複寫組態中的標籤或字首不相符，任務將不會執行。   | 此指標會發佈在來源儲存貯體的所在區域中。 | 是 | 否 | 

如需在 CloudWatch 內使用這些指標的相關資訊，請參閱[CloudWatch 中的 S3 複寫指標](metrics-dimensions.md#s3-cloudwatch-replication-metrics)。

## 啟用 S3 複寫指標
<a name="enabling-replication-metrics"></a>

您可以開始使用 S3 複寫指標搭配全新或現有的複寫規則。如需建立複寫規則的完整說明，請參閱 [設定相同帳戶內的儲存貯體複寫](replication-walkthrough1.md)。您可以選擇將複寫規則套用至整個 S3 儲存貯體，或套用至具有特定前綴或標籤的 Amazon S3 物件。

本主題提供當來源與目的地儲存貯體為相同或不同的 AWS 帳戶所擁有時，在您的複寫組態中啟用 S3 複寫指標的說明。

若要使用 AWS Command Line Interface (AWS CLI) 啟用複寫指標，您必須將複寫組態新增至`Metrics`已啟用 的來源儲存貯體。在此範例組態中，字首 `Tax` 下的物件會複寫至目的地儲存貯體 `amzn-s3-demo-bucket`，而且會針對這些物件產生指標。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket",
                "Metrics": {
                    "Status": "Enabled"
                }
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

## 檢視複寫指標
<a name="viewing-replication-metrics"></a>

您可以在 Amazon S3 主控台的來源一般用途儲存貯體**指標**索引標籤中檢視 S3 複寫指標。您也可在 Amazon CloudWatch 主控台中使用這些 Amazon CloudWatch 指標。當您啟用 S3 複寫指標時，Amazon CloudWatch 會發出指標，以供您在複寫規則層級追蹤位元組等待複寫、操作等待複寫和複寫延遲。

當您使用 Amazon S3 主控台或 Amazon S3 REST API 啟用具有 S3 複寫時間控制 (S3 RTC) 的複寫時，系統將會自動開啟 S3 複寫指標。您也可以在[建立或編輯規則](replication-walkthrough1.md)時，獨立於 S3 RTC 啟用 S3 複寫指標。

使用 S3 複寫時間控制時，當您在各自的複寫規則上啟用 S3 RTC 之後，Amazon CloudWatch 會在 15 分鐘內開始報告複寫指標。如需詳細資訊，請參閱[使用 S3 複寫指標](#repl-metrics)。

複寫指標會追蹤複寫組態的規則 ID。複寫規則 ID 可以是字首、標籤或兩者的組合。

 如需有關 Amazon S3 的 CloudWatch 指標的詳細資訊，請參閱「[使用 Amazon CloudWatch 監控指標](cloudwatch-monitoring.md)」。

**先決條件**  
建立啟用 S3 複寫指標的複寫規則。如需詳細資訊，請參閱[啟用 S3 複寫指標](#enabling-replication-metrics)。

**透過來源儲存貯體的**指標**索引標籤檢視 S3 複寫指標**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在儲存貯體清單中，選擇包含您要複寫指標之物件的來源儲存貯體名稱。

1. 選擇**指標**標籤。

1. 在**複寫指標**下，選擇您要查看其指標的複寫規則。

1. 選擇 **Display charts** (顯示圖表)。

   Amazon S3 會針對您所選取的規則顯示**複寫延遲**、**位元組等待複寫**、**操作等待複寫**，以及**複寫失敗的操作**圖表。

# 在 S3 Storage Lens 儀表板上檢視複寫指標
<a name="viewing-replication-metrics-storage-lens"></a>

除了 [S3 複寫指標](repl-metrics.md)之外，您還可以使用 S3 Storage Lens 提供的複寫相關資料保護指標。S3 Storage Lens 是一種雲端儲存體分析功能，您可以用來了解整個組織使用物件儲存體的情況及其活動情形。如需詳細資訊，請參閱[使用 S3 Storage Lens 保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html#storage-lens-data-protection-replication-rule)。

S3 Storage Lens 具有兩種層級的指標：免費指標，以及您可以升級至其中，但需額外付費的進階指標和建議。使用進階指標和建議，您可以存取其他指標和功能，以洞察您的儲存體。如需有關 S3 Storage Lens 定價的詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing)。

如果您在 S3 Storage Lens 中使用免費指標，您可以看到從來源儲存貯體複寫的位元組總數，或從來源儲存貯體複寫的物件計數等指標。

若要稽核整體複寫態勢，您可以在 S3 Storage Lens 中啟用進階指標。透過 S3 Storage Lens 中的進階指標，您可以查看您有多少不同類型的複寫規則，包括複寫目的地無效的複寫規則計數。

如需 S3 Storage Lens 指標的完整清單 (包括每個層級中的複寫指標)，請參閱 [S3 Storage Lens 指標詞彙表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html)。

**先決條件**  
建立[即時複寫組態](replication-how-setup.md)或 [S3 批次複寫任務](s3-batch-replication-batch.md)。

**在 Amazon S3 Storage Lens 中檢視複寫指標**

1. 建立 S3 Storage Lens 儀表板。如需逐步說明，請參閱 [使用 S3 主控台](storage_lens_creating_dashboard.md#storage_lens_console_creating)。

1. (選用) 在設定儀表板期間，如果您想要查看所有 S3 Storage Lens 複寫指標，請選取**進階指標和建議**，然後選取**進階資料保護指標**。如需完整的指標清單，請參閱 [S3 Storage Lens 指標詞彙表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html)。

   如果啟用進階指標和建議，您可以進一步了解複寫組態。例如，您可以使用 S3 Storage Lens 複寫規則計數指標，取得針對複寫所設定之儲存貯體的詳細資訊。此資訊包括儲存貯體和區域內部以及它們之間的複寫規則。如需詳細資訊，請參閱[計算每個儲存貯體的複寫規則總數](storage-lens-data-protection.md#storage-lens-data-protection-replication-rule)。

1. 建立儀表板後，請開啟儀表板，然後選擇**儲存貯體**索引標籤。

1. 向下捲動至 **Buckets** (儲存貯體) 區段。在 **Metrics categories** (指標類別) 下，選擇 **Data protection** (資料保護)。然後清除 **Summary** (摘要)。

1. 若要篩選**儲存貯體**清單以僅顯示複寫指標，請選擇偏好設定圖示 (![\[The preferences icon in the S3 Storage Lens dashboard.\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/preferences.png))。

1. 清除所有資料保護指標的切換，直到只留下選取的複寫指標為止。

1. (選用) 在 **Page size** (頁面大小) 下，選擇要在清單中顯示的儲存貯體數目。

1. 選擇**繼續**。

# 使用 Amazon S3 事件通知接收複寫失敗事件
<a name="replication-metrics-events"></a>

如果已在複寫組態上啟用 S3 複寫指標，您可以設定 Amazon S3 事件通知，以在物件未複寫至目的地 AWS 區域時通知您。如果已在複寫組態上啟用 S3 複寫時間控制 (S3 RTC)，則當系統未在複寫的 15 分鐘 S3 RTC 閾值內複寫物件時，您也會收到通知。

透過使用下列 `Replication` 事件類型，您可以追蹤擱置的位元組、擱置的作業和複寫延遲來監控複寫事件的每分鐘進度。如需有關 S3 複寫指標的詳細資訊，請參閱[使用 S3 複寫指標](repl-metrics.md)。
+ `s3:Replication:OperationFailedReplication` 事件類型會在有資格複寫的物件無法複寫時通知您。
+ 當有資格使用 S3 RTC 進行複寫的物件超過複寫的 15 分鐘閾值時，`s3:Replication:OperationMissedThreshold` 事件類型會通知您。
+ 當有資格使用 S3 RTC 進行複寫的物件，在 15 分鐘閾值之後複寫時，`s3:Replication:OperationReplicatedAfterThreshold` 事件類型會通知您。
+ 當有資格進行即時複寫的物件 (相同區域複寫 [SRR] 或跨區域複寫 [CRR]) 不再受到複寫指標追蹤時，`s3:Replication:OperationNotTracked` 事件類型會通知您。

如需所有支援複寫事件類型的完整描述，請參閱[SQS、SNS 和 Lambda 支援的事件類型](notification-how-to-event-types-and-destinations.md#supported-notification-event-types)。

如需 S3 事件通知擷取的失敗代碼清單，請參閱[Amazon S3 複寫失敗原因](#replication-failure-codes)。

您可以使用 Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notiﬁcation Service (Amazon SNS) 或 AWS Lambda接收 S3 事件通知。如需詳細資訊，請參閱[Amazon S3 事件通知](EventNotifications.md)。

如需如何設定 Amazon S3 事件通知的指示，請參閱[啟用事件通知](how-to-enable-disable-notification-intro.md)。

**注意**  
除了啟用事件通知之外，請確定您同時啟用 S3 複寫指標。如需詳細資訊，請參閱[啟用 S3 複寫指標](repl-metrics.md#enabling-replication-metrics)。

以下是 Amazon S3 傳送以發佈 `s3:Replication:OperationFailedReplication` 事件的訊息範例。如需詳細資訊，請參閱[事件訊息結構](notification-content-structure.md)。

```
{
  "Records": [
    {
      "eventVersion": "2.2",
      "eventSource": "aws:s3",
      "awsRegion": "us-east-1",
      "eventTime": "2024-09-05T21:04:32.527Z",
      "eventName": "Replication:OperationFailedReplication",
      "userIdentity": {
        "principalId": "s3.amazonaws.com"
      },
      "requestParameters": {
        "sourceIPAddress": "s3.amazonaws.com"
      },
      "responseElements": {
        "x-amz-request-id": "123bf045-2b4b-4ca8-a211-c34a63c59426",
        "x-amz-id-2": "12VAWNDIHnwJsRhTccqQTeAPoXQmRt22KkewMV8G3XZihAuf9CLDdmkApgZzudaIe2KlLfDqGS0="
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "ReplicationEventName",
        "bucket": {
          "name": "amzn-s3-demo-bucket1",
          "ownerIdentity": {
            "principalId": "111122223333"
          },
          "arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
        },
        "object": {
          "key": "replication-object-put-test.png",
          "size": 520080,
          "eTag": "e12345ca7e88a38428305d3ff7fcb99f",
          "versionId": "abcdeH0Xp66ep__QDjR76LK7Gc9X4wKO",
          "sequencer": "0066DA1CBF104C0D51"
        }
      },
      "replicationEventData": {
        "replicationRuleId": "notification-test-replication-rule",
        "destinationBucket": "arn:aws:s3:::amzn-s3-demo-bucket2",
        "s3Operation": "OBJECT_PUT",
        "requestTime": "2024-09-05T21:03:59.168Z",
        "failureReason": "AssumeRoleNotPermitted"
      }
    }
  ]
}
```

## Amazon S3 複寫失敗原因
<a name="replication-failure-codes"></a>

下表列出 Amazon S3 複寫失敗原因。您可以透過 Amazon S3 事件通知接收 `s3:Replication:OperationFailedReplication` 事件並查看 `failureReason` 值，以檢視這些原因。

您也可以在 S3 批次複寫完成報告中檢視這些失敗原因。如需詳細資訊，請參閱[批次複寫完成報告](s3-batch-replication-batch.md#batch-replication-completion-report)。


| 複寫失敗原因 | Description | 
| --- | --- | 
| `AssumeRoleNotPermitted` | Amazon S3 無法擔任複寫組態或批次操作任務中指定的 AWS Identity and Access Management (IAM) 角色。 | 
| `DstBucketInvalidRegion` | 目的地儲存貯體與批次操作任務 AWS 區域 指定的儲存貯體不同。此錯誤僅是批次複寫特有的。 | 
| `DstBucketNotFound` | Amazon S3 找不到複寫組態中指定的目的地儲存貯體。 | 
| `DstBucketObjectLockConfigMissing` | 若要從啟用物件鎖定的來源儲存貯體複寫物件，目的地儲存貯體亦須啟用物件鎖定。此錯誤指出目的地儲存貯體中可能未啟用物件鎖定。如需詳細資訊，請參閱[物件鎖定的考量事項](object-lock-managing.md)。 | 
| `DstBucketUnversioned` | S3 目的地儲存貯體未啟用版本控制。在目的地儲存貯體上啟用版本控制，以使用 S3 複寫來複寫物件。 | 
| `DstDelObjNotPermitted` | Amazon S3 無法將刪除標記複寫到目的地儲存貯體。可能缺少目的地儲存貯體的 `s3:ReplicateDelete` 許可。 | 
| `DstKmsKeyInvalidState` | 目的地儲存貯體的 AWS Key Management Service (AWS KMS) 金鑰未處於有效狀態。檢閱並啟用所需的 AWS KMS 金鑰。如需管理 AWS KMS 金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[AWS KMS 金鑰的金鑰狀態](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)。 | 
| `DstKmsKeyNotFound` | 在複寫組態中為目的地儲存貯體設定的 AWS KMS 金鑰不存在。 | 
| `DstMultipartCompleteNotPermitted` | Amazon S3 無法完成目標儲存貯體中物件的分段上傳。可能缺少目的地儲存貯體的 `s3:ReplicateObject` 許可。 | 
| `DstMultipartInitNotPermitted` | Amazon S3 無法對目的地儲存貯體啟動物件的分段上傳。可能缺少目的地儲存貯體的 `s3:ReplicateObject` 許可。 | 
| `DstMultipartUploadNotPermitted` | Amazon S3 無法將分段上傳物件上傳至目的地儲存貯體。可能缺少目的地儲存貯體的 `s3:ReplicateObject` 許可。 | 
| `DstObjectHardDeleted` | 刪除的物件若具有來自目的地儲存貯體之物件的版本 ID，S3 批次複寫不支援重新複寫這些物件。此錯誤僅是批次複寫特有的。 | 
| `DstPutAclNotPermitted` | Amazon S3 無法將物件存取控制清單 (ACL) 複寫到目的地儲存貯體。可能缺少目的地儲存貯體的 `s3:ReplicateObject` 許可。 | 
| `DstPutLegalHoldNotPermitted` | 在複寫不可變物件時，Amazon S3 無法對目的地物件放置物件鎖定合法保留。可能缺少目的地儲存貯體的 `s3:PutObjectLegalHold` 許可。如需詳細資訊，請參閱[法務保存](object-lock.md#object-lock-legal-holds)。 | 
|  `DstPutObjectNotPermitted` | Amazon S3 無法將物件複寫到目的地儲存貯體。當目的地儲存貯體缺少必要的許可 (`s3:ReplicateObject` 或 `s3:ObjectOwnerOverrideToBucketOwner`許可），或 AWS KMS 金鑰政策不允許來源儲存貯體的複寫角色在目的地儲存貯體使用 AWS KMS 金鑰 (`kms:Decrypt` 和 `kms:GenerateDataKey*`動作） 時，就會發生這種情況。 | 
|  `DstPutRetentionNotPermitted` | 在複寫不可變物件時，Amazon S3 無法對目的地物件放置保留期。可能缺少目的地儲存貯體的 `s3:PutObjectRetention` 許可。 | 
| `DstPutTaggingNotPermitted` | Amazon S3 無法將物件標籤複寫到目的地儲存貯體。可能缺少目的地儲存貯體的 `s3:ReplicateObject` 許可。 | 
| `DstVersionNotFound ` | Amazon S3 無法在需要複寫中繼資料的目的地儲存貯體中找到所需的物件版本。 | 
| `InitiateReplicationNotPermitted` | Amazon S3 無法啟動物件上的複寫。可能缺少批次操作任務的 `s3:InitiateReplication` 許可。此錯誤僅是批次複寫特有的。 | 
| `SrcBucketInvalidRegion` | 來源儲存貯體與批次操作任務 AWS 區域 指定的不同。此錯誤僅是批次複寫特有的。 | 
| `SrcBucketNotFound` | Amazon S3 無法找到來源儲存貯體。 | 
| `SrcBucketReplicationConfigMissing` | Amazon S3 找不到來源儲存貯體的複寫組態。 | 
| `SrcGetAclNotPermitted` |  Amazon S3 無法存取來源儲存貯體中的物件以進行複寫。可能缺少來源儲存貯體物件的 `s3:GetObjectVersionAcl` 許可。 來源儲存貯體中的物件必須為儲存貯體擁有者所擁有。如果已啟用 ACL，請確認「物件擁有權」設定為「偏好的儲存貯體擁有者」或「物件寫入器」。如果將「物件擁有權」設定為「偏好的儲存貯體擁有者」，則來源儲存貯體物件必須有 `bucket-owner-full-control` ACL，儲存貯體擁有者才能成為物件擁有者。透過將「物件擁有權」設定為「儲存貯體擁有者強制執行」並停用 ACL，來源帳戶就能取得其儲存貯體中所有物件的擁有權。  | 
| `SrcGetLegalHoldNotPermitted` | Amazon S3 無法存取 S3 物件鎖定法務保存資訊。 | 
| `SrcGetObjectNotPermitted` | Amazon S3 無法存取來源儲存貯體中的物件以進行複寫。可能缺少來源儲存貯體的 `s3:GetObjectVersionForReplication` 許可。 | 
| `SrcGetRetentionNotPermitted` | Amazon S3 無法存取 S3 物件鎖定保留期間資訊。 | 
| `SrcGetTaggingNotPermitted` | Amazon S3 無法從來源儲存貯體存取物件標籤資訊。可能缺少來源儲存貯體的 `s3:GetObjectVersionTagging` 許可。 | 
| `SrcHeadObjectNotPermitted` | Amazon S3 無法從來源儲存貯體擷取物件中繼資料。可能缺少來源儲存貯體的 `s3:GetObjectVersionForReplication` 許可。 | 
| `SrcKeyNotFound` | Amazon S3 找不到要複寫的來源物件金鑰。來源物件可能已在複寫完成之前遭到刪除。 | 
| `SrcKmsKeyInvalidState` | 來源儲存貯體的 AWS KMS 金鑰未處於有效狀態。檢閱並啟用所需的 AWS KMS 金鑰。如需管理 AWS KMS 金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[AWS KMS 金鑰的金鑰狀態](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)。 | 
| `SrcObjectNotEligible` | 有些物件不符合複寫資格。這可能是因為物件的儲存類別或物件標籤與複寫組態不相符。 | 
| `SrcObjectNotFound` | 來源物件不存在。 | 
| `SrcReplicationNotPending` | Amazon S3 已複寫此物件。此物件不再處於待複寫狀態。 | 
| `SrcVersionNotFound` | Amazon S3 找不到要複寫的來源物件版本。來源物件版本可能已在複寫完成之前遭到刪除。 | 

### 相關主題
<a name="replication-metrics-related-topics"></a>

[設定即時複寫的許可](setting-repl-config-perm-overview.md)

[故障排除複寫](replication-troubleshoot.md)

# 取得複寫狀態資訊
<a name="replication-status"></a>

複寫狀態可協助您判斷要複寫之物件的目前狀態。來源物件的複寫狀態將會傳回 `PENDING`、`COMPLETED` 或 `FAILED`。複本的複寫狀態將會傳回 `REPLICA`。

您也可以在建立 S3 批次複寫任務時使用複寫狀態值。例如，您可以使用這些狀態值來複寫從未複寫或複寫失敗的物件。如需搭配使用這些值與批次複寫的詳細資訊，請參閱[搭配批次複寫任務使用複寫狀態資訊](#replication-status-batch-replication)。

**Topics**
+ [

## 複寫狀態概觀
](#replication-status-overview)
+ [

## 複寫至多個目的地儲存貯體時的複寫狀態
](#replication-status-multiple-destinations)
+ [

## 啟用 Amazon S3 複本修改同步時的複寫狀態
](#replication-status-replica-mod-syn)
+ [

## 搭配批次複寫任務使用複寫狀態資訊
](#replication-status-batch-replication)
+ [

## 尋找複寫狀態
](#replication-status-usage)

## 複寫狀態概觀
<a name="replication-status-overview"></a>

在複寫中，您有一個來源儲存貯體，您可以在其上設定複寫一個或以上 Amazon S3 複寫物件的目的地儲存貯體。當您從這些儲存貯體請求物件 (使用 `GetObject`) 或物件中繼資料 (使用 `HeadObject`) 時，Amazon S3 會在回應中傳回 `x-amz-replication-status` 標頭：
+ 當您從來源儲存貯體請求物件時，如果請求中的物件符合複寫資格，Amazon S3 即會傳回 `x-amz-replication-status` 標頭。

  例如，假設您在複寫組態中指定物件前綴 `TaxDocs`，告知 Amazon S3 複寫僅具有金鑰名稱前綴 `TaxDocs` 的物件。系統會複寫您上傳且具有此金鑰名稱前綴 (例如 `TaxDocs/document1.pdf`) 的任何物件。針對具有此金鑰名稱前綴的物件請求，Amazon S3 會傳回 `x-amz-replication-status` 標頭，以及代表物件複寫狀態的下列其中一個值：`PENDING`、`COMPLETED` 或 `FAILED`。
**注意**  
若物件複寫在您上傳完物件後失敗，則您無法重試複寫。您必須再次上傳物件，或使用 S3 批次複寫來複寫任何失敗的物件。S3 生命週期會封鎖具有 `PENDING`或 `FAILED`複寫狀態之物件的過期和轉換動作。如需使用批次複寫的詳細資訊，請參閱[使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。  
針對缺少複寫角色許可、 AWS Key Management Service (AWS KMS) 許可或儲存貯體許可等問題，物件會轉換為 `FAILED` 狀態。對於暫時性錯誤，例如，如果儲存貯體或區域無法使用，複寫狀態不會轉換成 `FAILED`，但會保持 `PENDING`。資源恢復線上狀態後，Amazon S3 將繼續複寫這些物件。
+ 當您從目的地儲存貯體請求物件時，如果您請求中的物件是 Amazon S3 建立的複本，Amazon S3 會傳回值為 `REPLICA` 的 `x-amz-replication-status` 標頭。

**注意**  
在從已啟用複寫的來源儲存貯體中刪除物件之前，您應該先檢查物件的複寫狀態，確保已複寫物件。  
如果來源儲存貯體上已啟用 S3 生命週期組態，Amazon S3 會暫停生命週期動作，直到將物件的複寫狀態標記為 為止`COMPLETED`。如果複寫狀態為 `FAILED`，S3 生命週期會繼續封鎖物件的過期和轉換動作，直到您解決基礎複寫問題為止。如需詳細資訊，請參閱[S3 生命週期和](lifecycle-and-other-bucket-config.md#lifecycle-and-replication)。

## 複寫至多個目的地儲存貯體時的複寫狀態
<a name="replication-status-multiple-destinations"></a>

當您將物件複寫至多個目的地儲存貯體時，`x-amz-replication-status` 標頭的運作方式會有所不同。成功複寫至所有目的地時，來源物件的標頭只會傳回 `COMPLETED` 的值。標頭會保留在 `PENDING` 值，直到對所有目的地的複寫完成為止。如果一或多個目的地複寫失敗，標頭會傳回 `FAILED`。

## 啟用 Amazon S3 複本修改同步時的複寫狀態
<a name="replication-status-replica-mod-syn"></a>

當您的複寫規則啟用 Amazon S3 複本修改同步時，複本可以報告 `REPLICA` 以外的狀態。如果中繼資料變更正在複寫過程中，則 `x-amz-replication-status` 標頭會傳回 `PENDING`。如果複本修改同步無法複寫中繼資料，則標頭會傳回 `FAILED`。如果中繼資料正確複寫，複本將會傳回標頭 `REPLICA`。

## 搭配批次複寫任務使用複寫狀態資訊
<a name="replication-status-batch-replication"></a>

建立批次複寫任務時，您可以選擇指定其他篩選條件，例如物件建立日期和複寫狀態，以縮小任務的範圍。

您可以根據 `ObjectReplicationStatuses` 值來篩選要複寫的物件，方法是提供下列一或多個值：
+ `"NONE"` – 表示 Amazon S3 之前從未嘗試複寫該物件。
+ `"FAILED"` – 表示 Amazon S3 曾嘗試過複寫物件，但失敗。
+ `"COMPLETED"` – 表示 Amazon S3 之前已成功複寫該物件。
+ `"REPLICA"` – 表示這是 Amazon S3 曾從其他來源複寫的複本物件。

如需搭配使用這些複寫狀態值與批次複寫的詳細資訊，請參閱[批次複寫任務的篩選條件](s3-batch-replication-batch.md#batch-replication-filters)。

## 尋找複寫狀態
<a name="replication-status-usage"></a>

若要取得儲存貯體中物件的複寫狀態，您可使用 Amazon S3 庫存工具。Amazon S3 會將 CSV 檔案傳送到您在庫存組態中指定的目的地儲存貯體。您也可以使用 Amazon Athena，來查詢庫存報告中的複寫狀態。如需 Amazon S3 庫存的詳細資訊，請參閱 [使用 S3 庫存清單編目和分析資料](storage-inventory.md)。

您也可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDK 來尋找物件複寫狀態。

### 使用 S3 主控台
<a name="replication-status-console"></a>

在 Amazon S3 主控台中，您可以在物件詳細資訊頁面上檢視物件的複寫狀態。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在**一般用途儲存貯體**清單中，選擇複寫來源儲存貯體的名稱。

1. 在 **Objects** (物件) 清單中，選擇物件名稱。物件的詳細資訊頁面隨即出現。

1. 在**屬性**索引標籤上，向下捲動至**物件管理概觀**區段。在**管理組態**下，請參閱**複寫狀態**下的值。

### 使用 AWS CLI
<a name="replication-status-cli"></a>

使用 AWS Command Line Interface (AWS CLI) `head-object`命令擷取物件中繼資料，如下列範例所示。以複寫來源儲存貯體的名稱取代 `amzn-s3-demo-source-bucket1`，並以您自己的資訊取代其他 `user input placeholders`。

```
aws s3api head-object --bucket amzn-s3-demo-source-bucket1 --key object-key --version-id object-version-id           
```

此命令會傳回物件中繼資料，包括 `ReplicationStatus`，如下列範例回應所示。

```
{
   "AcceptRanges":"bytes",
   "ContentType":"image/jpeg",
   "LastModified":"Mon, 23 Mar 2015 21:02:29 GMT",
   "ContentLength":3191,
   "ReplicationStatus":"COMPLETED",
   "VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.",
   "ETag":"\"6805f2cfc46c0f04559748bb039d69ae\"",
   "Metadata":{

   }
}
```

### 使用 AWS SDKs
<a name="replication-status-sdk"></a>

下列程式碼片段會 適用於 .NET 的 AWS SDK分別使用 適用於 Java 的 AWS SDK 和 取得複寫狀態。

------
#### [ Java ]

```
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, key);
ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest);

System.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));
```

------
#### [ .NET ]

```
GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest
    {
         BucketName = sourceBucket,
         Key        = objectKey
    };

GetObjectMetadataResponse getmetadataResponse = client.GetObjectMetadata(getmetadataRequest);
Console.WriteLine("Object replication status: {0}", getmetadataResponse.ReplicationStatus);
```

------