

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

# 設定相同帳戶內的儲存貯體複寫
<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);
            }
        }
    }
}
```

------