

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

# 複製物件
<a name="batch-ops-copy-object"></a>

您可以使用 Amazon S3 Batch Operations 對 Amazon S3 物件執行大規模的批次操作。Batch Operations **複製**操作會複製資訊清單中指定的每個物件。您可以將物件複製到相同 中的儲存貯體， AWS 區域 或複製到不同 區域中的儲存貯體。S3 批次作業支援 Amazon S3 中可用來複製物件的大多數選項。這些選項包含設定物件中繼資料、設定許可，以及變更物件的儲存體方案。

您也可以使用**複製**操作來複製現有的未加密物件，並將其作為加密物件寫入相同的儲存貯體中。如需詳細資訊，請參閱[使用 Amazon S3 批次操作來加密現有物件](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/)。

複製物件時，您可以變更物件計算檢查總和的檢查總和演算法。如果物件沒有額外計算檢查總和，您也可以透過指定 Amazon S3 使用檢查總和演算法新增一個。如需詳細資訊，請參閱[在 Amazon S3 中檢查物件完整性](checking-object-integrity.md)。

如需在 Amazon S3 中複製物件以及必要和選用參數的詳細資訊，請參閱本指南中的[複製、移動和重新命名物件](copy-object.md)以及 Amazon Simple Storage Service API 參考**中的[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)。

## 法規與限制
<a name="batch-ops-copy-object-restrictions"></a>

當您使用 Batch Operations **複製**操作時，適用下列限制：
+ 所有來源物件必須位於一個儲存貯體中。
+ 所有目的地物件必須位於一個儲存貯體中。
+ 您必須具有來源儲存貯體的讀取許可，和目的地儲存貯體的寫入許可。
+ 複製的物件大小上限可達 5 GB。
+ 如果嘗試將物件從 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 類別複製到 S3 Standard 儲存類別，必須先還原這些物件。如需詳細資訊，請參閱[還原已封存的物件](restoring-objects.md)。
+ 您必須在目的地區域中建立 Batch Operations **複製**作業，也就是您要將物件複製到其中的區域。
+ 支援所有 `CopyObject` 選項，但不包括對實體標籤 (ETag) 執行條件式檢查，以及使用客戶提供加密金鑰的伺服器端加密 (SSE-C)。
+ 如果目的地儲存貯體無版本控制，您將覆寫任何具有相同金鑰名稱的物件。
+ 物件不一定按照它們在資訊清單中出現的相同順序進行複製。對於使用版本控制的儲存貯體，如果保留目前或非目前版本順序很重要，請先複製所有非目前版本。然後，在第一個任務完成後，在接下來的任務中複製目前版本。
+ 不支援將物件複製到低冗餘儲存 (RRS) 類別。
+ 單一 Batch Operations 複製作業最多可支援 200 億個物件的資訊清單。

# 使用 S3 批次操作複製物件
<a name="batch-ops-examples-copy"></a>

您可以使用 Amazon S3 Batch Operations 對 Amazon S3 物件執行大規模的批次操作。您可以使用 S3 Batch Operations 建立**複製** (`CopyObject`) 作業，將相同帳戶中的物件複製到不同的目的地帳戶。

下列範例示範如何儲存和使用不同帳戶中的資訊清單。第一個範例示範如何使用 Amazon S3 庫存清單將庫存報告傳送至目的地帳戶，以在建立作業期間使用。第二個範例示範如何在來源或目的地帳戶中使用逗號分隔值 (CSV) 資訊清單。第三個範例示範如何使用**複製**操作，為已使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS) 加密的現有物件啟用 S3 儲存貯體金鑰。

**Topics**
+ [使用庫存報告跨 複製物件 AWS 帳戶](specify-batchjob-manifest-xaccount-inventory.md)
+ [使用 CSV 資訊清單跨 複製物件 AWS 帳戶](specify-batchjob-manifest-xaccount-csv.md)
+ [使用 Batch Operations 為 SSE-KMS 啟用 S3 儲存貯體金鑰](batch-ops-copy-example-bucket-key.md)

# 使用庫存報告跨 複製物件 AWS 帳戶
<a name="specify-batchjob-manifest-xaccount-inventory"></a>

您可以使用 Amazon S3 Batch Operations 對 Amazon S3 物件執行大規模的批次操作。您可以使用 S3 Batch Operations 建立**複製** (`CopyObject`) 作業，將相同帳戶中的物件複製到不同的目的地帳戶。

您可以使用 Amazon S3 庫存清單建立庫存報告，並使用該報告建立要透過 S3 Batch Operations 複製的物件清單 (資訊清單)。如需更多有關在來源帳戶或目標帳戶中使用 CSV 資訊清單的資訊，請參閱「[使用 CSV 資訊清單跨 複製物件 AWS 帳戶](specify-batchjob-manifest-xaccount-csv.md)」。

Amazon S3 庫存會在儲存貯體中產生物件的庫存。結果清單將推送至一個輸出檔案。已進行庫存儲存貯體稱作來源儲存貯體，存放庫存報告檔案的儲存貯體則稱作目的地儲存貯體。

Amazon S3 清查報告可設定為交付至另一個 AWS 帳戶。這樣做可讓 S3 Batch Operations 在目的地帳戶建立作業時讀取庫存報告。

如需 Amazon S3 清查來源和目的地儲存貯體的詳細資訊，請參閱「[來源與目的地儲存貯體](storage-inventory.md#storage-inventory-buckets)」。

設定清查最簡單的方式是使用 Amazon S3 主控台，但您也可以使用 Amazon S3 REST API、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs。

下列主控台程序包含設定 S3 批次操作任務許可的高階步驟。在此程序中，您從來源帳戶複製物件至目的地帳戶，並將清查報告存放於目的地帳戶中。

**設定來源與目標儲存貯體分屬於不同帳戶時的 Amazon S3 庫存**

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

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

1. 決定 (或建立) 用於儲存庫存報告的目的地資訊清單儲存貯體。在此程序中，*目的地帳戶*是擁有目的地資訊清單儲存貯體和物件複製的目的儲存貯體的帳戶。

1. 設定來源儲存貯體的庫存報告。如需如何使用主控台設定清查或如何加密清查清單檔案的相關資訊，請參閱 [設定 Amazon S3 清查](configure-inventory.md)。

   設定庫存報告時，您會指定要在其中儲存清單的目的地儲存貯體。來源儲存貯體的庫存報告會推送至目的地儲存貯體。在此程序中，*來源帳戶*為擁有來源儲存貯體的帳戶。

   選擇 **CSV** 為輸出格式。

   在輸入目的地儲存貯體資訊時，請選擇 **Buckets in another account (另一個帳戶中的儲存貯體)**。然後，輸入該目的地資訊清單儲存貯體的名稱。(選用) 您可輸入目的地帳戶的帳戶 ID。

   在儲存庫存組態設定後，主控台會顯示類似以下的訊息：

   Amazon S3 無法在目的地儲存貯體建立儲存貯體政策。請要求目的地儲存貯體擁有者新增以下儲存貯體政策，以允許 Amazon S3 在該儲存貯體中放置資料。

   主控台隨後會顯示您可用於目的地儲存貯體的儲存貯體政策。

1. 複製該顯示於主控台中的目的地儲存貯體政策。

1. 在該目的地帳戶中，新增複製的儲存貯體政策至存放庫存報告的目的地資訊清單儲存貯體。

1. 在以 S3 批次操作信任政策為基礎的目的地帳戶中建立角色。如需此信任政策的詳細資訊，請參閱[信任政策](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust)。

   如需建立角色的詳細資訊，請參閱《IAM 使用者指南》**中的[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   輸入角色的名稱 (下列範例角色使用 *`BatchOperationsDestinationRoleCOPY`* 作為名稱)。選擇 **S3** 服務，然後選擇 **S3 Batch Operations** 使用案例，以將信任政策套用至該角色。

   然後選擇 **Create policy (建立政策)** 以連接以下政策至角色。若要使用此政策，請以您自己的資訊取代 *`user input placeholders`*。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   該角色會使用政策來授予 `batchoperations.s3.amazonaws.com` 權限以讀取目的地儲存貯體中的資訊清單。這也會授予來源物件儲存貯體中 `GET` 物件、存取控制清單 (ACL)、標籤和版本的許可，並授予目的地物件儲存貯體中 `PUT` 物件、ACL、標籤和版本的許可。

1. 在來源帳戶中，為來源儲存貯體建立儲存貯體政策，將來源儲存貯體中 `GET` 物件、ACL、標籤和版本的許可授予您在上一個步驟中建立的角色。此步驟可允許 S3 批次操作透過信任的角色從來源儲存貯體取得物件。

   以下為來源帳戶的儲存貯體政策範例。若要使用此政策，請以您自己的資訊取代 *`user input placeholders`*。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowBatchOperationsSourceObjectCOPY",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetObjectAcl",
                   "s3:GetObjectTagging",
                   "s3:GetObjectVersionAcl",
                   "s3:GetObjectVersionTagging"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           }
       ]
   }
   ```

------

1. 庫存報告可供使用之後，請在目的地帳戶中建立一個 S3 Batch Operations **複製** (`CopyObject`) 作業，並從目的地資訊清單儲存貯體選擇庫存報告。您需要在目的地帳戶中建立之 IAM 角色的 ARN。

   如需建立任務的一般資訊，請參閱「[建立 S3 批次操作任務](batch-ops-create-job.md)」。

   如需使用主控台建立作業的資訊，請參閱[建立 S3 批次操作任務](batch-ops-create-job.md)。

# 使用 CSV 資訊清單跨 複製物件 AWS 帳戶
<a name="specify-batchjob-manifest-xaccount-csv"></a>

您可以使用 Amazon S3 Batch Operations 對 Amazon S3 物件執行大規模的批次操作。您可以使用 S3 Batch Operations 建立**複製** (`CopyObject`) 作業，將相同帳戶中的物件複製到不同的目的地帳戶。

您可以使用儲存在來源帳戶中的 CSV 資訊清單，透過 S3 Batch Operations 在 AWS 帳戶 之間複製物件。若要使用 S3 庫存報告作為資訊清單，請參閱[使用庫存報告跨 複製物件 AWS 帳戶](specify-batchjob-manifest-xaccount-inventory.md)。

如需 CSV 格式資訊清單檔案的範例，請參閱[建立清單檔案](batch-ops-create-job.md#create-manifest-file)。

下列程序示範當使用 S3 Batch Operations 作業將物件從來源帳戶複製到目的地帳戶時，如何使用來源帳戶中儲存的 CSV 資訊清單檔案設定許可。

**使用 CSV 資訊清單跨 複製物件 AWS 帳戶**

1. 在以 S3 Batch Operations 信任政策為基礎的目的地帳戶中建立 AWS Identity and Access Management (IAM) 角色。在此程序中，*destination account (目的地帳戶)* 為物件複製到的目的地帳戶。

   如需信任政策的詳細資訊，請參閱「[信任政策](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust)」。

   如需建立角色的詳細資訊，請參閱《IAM 使用者指南》**中的[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   如果您使用主控台建立角色，請輸入角色的名稱 (下列範例角色使用 `BatchOperationsDestinationRoleCOPY` 作為名稱)。選擇 **S3** 服務，然後選擇 **S3 Batch Operations** 使用案例，以將信任政策套用至該角色。

   然後選擇 **Create policy (建立政策)** 以連接以下政策至角色。若要使用此政策，請以您自己的資訊取代 *`user input placeholders`*。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   透過使用政策，該角色可授予 `batchoperations.s3.amazonaws.com` 權限以讀取來源資訊清單儲存貯體中的資訊清單。這會授予來源物件儲存貯體中 `GET` 物件、存取控制清單 (ACL)、標籤和版本的許可，也會授予目的地物件儲存貯體中 `PUT` 物件、ACL、標籤和版本的許可。

1. 在來源帳戶中，為包含資訊清單的儲存貯體建立儲存貯體政策，將來源資訊清單儲存貯體中 `GET` 物件和版本的許可授予您在上一個步驟中建立的角色。

   此步驟可讓 S3 Batch Operations 使用信任的角色讀取資訊清單。套用儲存貯體政策至包含資訊清單的儲存貯體。

   以下為套用至來源資訊清單儲存貯體的儲存貯體政策範例。若要使用此政策，請以您自己的資訊取代 *`user input placeholders`*。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceManifestRead",
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::111122223333:user/ConsoleUserCreatingJob",
             "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
           ]
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
       }
     ]
   }
   ```

------

   此政策也將授予權限，以允許在目的地帳戶中建立任務的主控台使用者，可透過相同的儲存貯體政策，以在來源資訊清單儲存貯體中具有相同的權限。

1. 在來源帳戶中，為來源儲存貯體建立儲存貯體政策，將來源物件儲存貯體中 `GET` 物件、ACL、標籤和版本的許可授予您建立的角色。然後 S3 批次操作可以透過信任的角色從來源儲存貯體取得物件。

   以下為包含來源物件的儲存貯體之儲存貯體政策範例。若要使用此政策，請以您自己的資訊取代 *`user input placeholders`*。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceObjectCOPY",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
       }
     ]
   }
   ```

------

1. 在目的地帳戶中建立 S3 批次操作任務。您需要在目標帳戶中建立的角色 Amazon Resource Name (ARN)。如需建立任務的詳細資訊，請參閱[建立 S3 批次操作任務](batch-ops-create-job.md)。

# 使用 Batch Operations 為 SSE-KMS 啟用 S3 儲存貯體金鑰
<a name="batch-ops-copy-example-bucket-key"></a>

S3 儲存貯體金鑰透過減少從 Amazon S3 到 的請求流量，降低使用 AWS Key Management Service (AWS KMS) (SSE-KMS) 進行伺服器端加密的成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)及[設定您的儲存貯體以使用具有 SSE-KMS 的 S3 儲存貯體來獲取新物件](configuring-bucket-key.md)。當您使用 REST API、 AWS SDKs 或 執行`CopyObject`操作時 AWS CLI，您可以透過新增具有 或 `true``false`值的`x-amz-server-side-encryption-bucket-key-enabled`請求標頭，在物件層級啟用或停用 S3 儲存貯體金鑰。

當您使用 `CopyObject` 操作為物件設定 S3 儲存貯體金鑰時，Amazon S3 只會更新該物件的設定。目的地儲存貯體的 S3 儲存貯體金鑰設定不會變更。如果您將 AWS KMS 加密物件的 `CopyObject` 請求提交至啟用 S3 儲存貯體金鑰的儲存貯體，除非您停用請求標頭中的金鑰，否則物件層級操作將自動使用 S3 儲存貯體金鑰。如果您沒有為物件指定 S3 儲存貯體金鑰，Amazon S3 會將目的地儲存貯體的 S3 儲存貯體金鑰設定套用至物件。

若要加密現有的 Amazon S3 物件，您可以使用 S3 Batch Operations。您可以使用**批次操作複製操作**來複製現有的未加密物件，並將其作為加密物件寫入相同的儲存貯體中。如需詳細資訊，請參閱 AWS 儲存部落格上的[使用 Amazon S3 Batch Operations 加密物件](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/)。

在下列範例中，您將使用 Batch Operations **複製**操作，在現有物件上啟用 S3 儲存貯體金鑰。如需詳細資訊，請參閱[在物件層級設定 S3 儲存貯體金鑰](configuring-bucket-key-object.md)。

**Topics**
+ [使用 S3 Batch Operations 透過啟用 S3 儲存貯體金鑰來加密物件的考量](#bucket-key-ex-things-to-note)
+ [先決條件](#bucket-key-ex-prerequisites)
+ [步驟 1：使用 Amazon S3 庫存取得您的物件清單](#bucket-key-ex-get-list-of-objects)
+ [第 2 步：使用 S3 Select 來篩選物件列表](#bucket-key-ex-filter-object-list-with-s3-select)
+ [步驟 3：設定並執行 S3 批次操作任務](#bucket-key-ex-setup-and-run-job)

## 使用 S3 Batch Operations 透過啟用 S3 儲存貯體金鑰來加密物件的考量
<a name="bucket-key-ex-things-to-note"></a>

在您使用 S3 Batch Operations 透過 S3 儲存貯體金鑰來加密物件時，請考慮下列議題：
+ 除了與 S3 批次操作代表您執行之作業相關聯的任何費用之外，還需支付 S3 批次操作任務、物件及請求之費用，包括資料傳輸、請求及其他費用。如需詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing)。
+ 如果您使用無版本控制的儲存貯體，則執行的每個 S3 批次操作任務都會建立物件的新加密版本。同時也會保留先前沒有配置 S3 儲存貯體金鑰的版本。若要刪除舊版本，請如 [生命週期組態元素](intro-lifecycle-rules.md) 之描述，設定非最新版本 S3 生命週期過期政策。
+ 複製操作會建立具有新建立日期的新物件，這會影響封存等生命週期動作。若您複製儲存貯體中的所有物件，則所有新副本皆會有相同或類似的建立日期。若要進一步識別這些物件，並為多個資料子集建立不同的生命週期規則，請考慮使用物件標籤。

## 先決條件
<a name="bucket-key-ex-prerequisites"></a>

將物件設定為使用 S3 儲存貯體金鑰之前，請先檢閱[啟用 S3 儲存貯體金鑰之前，要注意的變更](bucket-key.md#bucket-key-changes)。

若要使用此範例，您必須擁有 AWS 帳戶 和至少一個 S3 儲存貯體，才能保留您的工作檔案和加密結果。您也可能會發現許多現有的 S3 批次操作文件極為有用，包括下列主題：
+ [S3 批次作業基礎知識](batch-ops.md#batch-ops-basics)
+ [建立 S3 批次操作任務](batch-ops-create-job.md)
+ [S3 批次操作支援的操作](batch-ops-operations.md)
+ [管理 S3 批次作業任務](batch-ops-managing-jobs.md)

## 步驟 1：使用 Amazon S3 庫存取得您的物件清單
<a name="bucket-key-ex-get-list-of-objects"></a>

若要開始使用，請確認包含要加密之物件的 S3 儲存貯體，並取得其內容清單。Amazon S3 清查報告是執行此操作最方便且經濟實惠的方式。報告會提供儲存貯體中的物件清單，以及相關聯的中繼資料。在此步驟中，來源儲存貯體是已進行清查的儲存貯體，而目的地儲存貯體是您用於儲存庫存報告檔案的儲存貯體。如需 Amazon S3 清查來源和目的地儲存貯體的詳細資訊，請參閱「[使用 S3 庫存清單編目和分析資料](storage-inventory.md)」。

設定庫存最簡單的方式就是使用 AWS 管理主控台。但您也可以使用 REST API、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs。在執行這些步驟前，請務必先登入主控台，然後開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。如果您遇到權限遭拒絕的錯誤情況，請將儲存貯體政策新增至目的地儲存貯體。如需詳細資訊，請參閱[授予 S3 清查與 S3 分析的許可](example-bucket-policies.md#example-bucket-policies-s3-inventory-1)。

**使用 S3 庫存取得您的物件清單**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**儲存貯體**，然後選擇包含要加密之物件的儲存貯體。

1. 在 **Management** (管理) 索引標籤上，導覽至 **Inventory configurations** (庫存組態) 區段，然後選擇 **Create inventory configuration** (建立庫存組態)。

1. 為您的新清查命名、輸入目的地 S3 儲存貯體的名稱，然後選擇是否要建立 Amazon S3 的目的地字首以指派物件至儲存貯體中。

1. 在 **Output format** (輸出格式) 中，選擇 **CSV**。

1. (選用) 在**其他欄位 - *選用***區段中，選擇**加密**以及其他任何您感興趣的報告欄位。將報告傳送的頻率設定為 **Daily** (每日)，以縮短第一份報告傳送至您儲存貯體的時間。

1. 選擇 **Create** (建立) 以儲存您的組態。

Amazon S3 提供首份報告最多可能需要 48 小時，因此，請在第一份報告送達時再回來查看。收到第一份報告之後，請繼續進行下一個步驟來篩選 S3 庫存報告的內容。如果您不想再收到此儲存貯體的詳細清查報告，請刪除您的 S3 清查組態。否則 Amazon S3 會繼續依每日或每週排程傳送報告。

庫存清單不是所有物件的單一時間點視圖。庫存清單是儲存貯體項目的輪換快照，最終會趨於一致 (例如，清單可能不包含最近新增或刪除的物件)。結合 S3 庫存和 S3 批次操作，會在您使用靜態物件或使用兩天或更多天前建立的物件集時達到最佳效果。若要使用更新的資料，請使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) (`GET` 儲存貯體) API 操作來手動建立物件清單。如有需要，請在接下來的幾天內重複此程序，或直到您的庫存報告顯示出所有物件的所需狀態為止。

## 第 2 步：使用 S3 Select 來篩選物件列表
<a name="bucket-key-ex-filter-object-list-with-s3-select"></a>

在收到 S3 庫存報告之後，您可以篩選報告內容，僅列出未透過啟用 S3 儲存貯體金鑰來加密的物件。如果您希望透過啟用 S3 儲存貯體金鑰來加密所有儲存貯體的物件，則可以忽略此步驟。不過，在此階段篩選 S3 庫存報告，可為您節省重新加密先前透過啟用 S3 儲存貯體金鑰來加密物件所需的時間和費用。

雖然下列步驟示範如何使用 [Amazon S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) 來篩選，但您也可以使用 [Amazon Athena](https://aws.amazon.com/athena)。若要決定要使用哪個工具，請查看 S3 清查報告的 `manifest.json` 檔案。此檔案會列出與該報告相關聯的資料檔案數量。如果數量龐大，請使用 Amazon Athena，因為其會在多個 S3 物件上運行，而 S3 Select 一次僅可在一個物件上運行。如需同時使用 Amazon S3 和 Athena 的詳細資訊，請參閱 AWS 儲存部落格文章中的 [使用 Amazon Athena 查詢 Amazon S3 庫存](storage-inventory-athena-query.md)和「使用 Athena」[使用 Amazon S3 Batch Operations 加密物件](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations)。

**使用 S3 Select 來篩選 S3 庫存報告**

1. 開啟您清查報告的 `manifest.json` 檔案，並查看 JSON 的 `fileSchema` 區段。這會通知您在資料上執行的查詢。

   下面的 JSON 是範例 `manifest.json` 檔案，示範儲存貯體上已啟用版本控制的 CSV 格式庫存。依據您設定清查報告的方式，資訊清單可能會有所不同。

   ```
     {
       "sourceBucket": "batchoperationsdemo",
       "destinationBucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
       "version": "2021-05-22",
       "creationTimestamp": "1558656000000",
       "fileFormat": "CSV",
       "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus",
       "files": [
         {
           "key": "demoinv/batchoperationsdemo/DemoInventory/data/009a40e4-f053-4c16-8c75-6100f8892202.csv.gz",
           "size": 72691,
           "MD5checksum": "c24c831717a099f0ebe4a9d1c5d3935c"
         }
       ]
     }
   ```

   如果未在儲存貯體上啟動版本控制，或者如果您選擇執行最新版本的報告，則 `fileSchema` 是 `Bucket`、`Key` 以及 `BucketKeyStatus`。

   如果版本控制*已*啟動，依據您設定清查報告的方式，`fileSchema` 可能包含以下項目：`Bucket`、`Key`、`VersionId`、`IsLatest`、`IsDeleteMarker`、`BucketKeyStatus`。因此，在您執行查詢時，請注意第 1、2、3 和 6 欄。

   除了要搜尋的欄位 (即 `BucketKeyStatus`) 之外，S3 批次操作還需要輸入儲存貯體、金鑰及版本 ID，以執行任務。您不需要 `VersionID` 欄位，但在使用版本控制的儲存貯體上操作時，這有助於指定 `VersionID` 欄位。如需詳細資訊，請參閱[使用已啟用版本控制之儲存貯體中的物件](manage-objects-versioned-bucket.md)。

1. 找出清查報告的資料檔案。`manifest.json` 物件會列出 **files** (檔案) 下的資料檔案。

1. 在 S3 主控台中找出並選取資料檔案後，請選擇 **Actions** (動作)，然後選擇 **Query with S3 Select** (使用 S3 Select 查詢)。

1. 保留選取預設 **CSV**、**Comma** (逗號) 以及 **GZIP** 等欄位，然後選擇 **Next** (下一步)。

1. 若要在繼續之前檢閱您的清查報告格式，請選擇 **Show file preview** (顯示檔案預覽)。

1. 在 SQL 表達式欄位中輸入要參照的資料欄，然後選擇 **Run SQL** (執行 SQL)。下列運算式會傳回未設定 S3 儲存貯體金鑰之所有物件的第 1 至 3 欄。

   `select s._1, s._2, s._3 from s3object s where s._6 = 'DISABLED'`

   以下為結果範例。

   ```
         batchoperationsdemo,0100059%7Ethumb.jpg,lsrtIxksLu0R0ZkYPL.LhgD5caTYn6vu
         batchoperationsdemo,0100074%7Ethumb.jpg,sd2M60g6Fdazoi6D5kNARIE7KzUibmHR
         batchoperationsdemo,0100075%7Ethumb.jpg,TLYESLnl1mXD5c4BwiOIinqFrktddkoL
         batchoperationsdemo,0200147%7Ethumb.jpg,amufzfMi_fEw0Rs99rxR_HrDFlE.l3Y0
         batchoperationsdemo,0301420%7Ethumb.jpg,9qGU2SEscL.C.c_sK89trmXYIwooABSh
         batchoperationsdemo,0401524%7Ethumb.jpg,ORnEWNuB1QhHrrYAGFsZhbyvEYJ3DUor
         batchoperationsdemo,200907200065HQ%7Ethumb.jpg,d8LgvIVjbDR5mUVwW6pu9ahTfReyn5V4
         batchoperationsdemo,200907200076HQ%7Ethumb.jpg,XUT25d7.gK40u_GmnupdaZg3BVx2jN40
         batchoperationsdemo,201103190002HQ%7Ethumb.jpg,z.2sVRh0myqVi0BuIrngWlsRPQdb7qOS
   ```

1. 下載結果，將結果儲存為 CSV 格式，然後將結果上傳到 Amazon S3 作為 S3 批次操作任務的物件清單。

1. 如果您有多個清單檔案，也請在其上執行 **Query with S3 Select** (使用 S3 Select 查詢)。根據結果大小，您可以合併清單並執行單一 S3 批次操作任務，或將每個清單當成個別任務來執行。若要決定執行的作業數目，請考慮執行每個 S3 Batch Operations 作業的[價格](https://aws.amazon.com/s3/pricing/)。

## 步驟 3：設定並執行 S3 批次操作任務
<a name="bucket-key-ex-setup-and-run-job"></a>

現在，您已擁有經過篩選的 S3 物件 CSV 清單，可以開始 S3 Batch Operations 作業，以透過啟用 S3 儲存貯體金鑰來加密物件。

*任務*指的是所提供物件的列表 (清單)、執行的操作以及指定的參數。透過啟用 S3 儲存貯體金鑰來加密這組物件的最簡單方式就是使用**複製**操作，並指定與資訊清單中所列物件相同的目的地字首。在無版本控制的儲存貯體中，此操作會覆寫現有的物件。在開啟版本控制的儲存貯體中，此操作會建立更新、已加密的物件版本。

在複製物件時，請指定 Amazon S3 應使用 SSE-KMS 加密來加密物件。此作業會複製物件，因此無論您將物件新增至 Amazon S3 的最初時間為何，所有物件都會在完成時顯示更新的建立日期。也可以為您的物件集指定其他屬性，作為 S3 批次操作任務的一部分，包括物件標籤和儲存類別。

**Topics**
+ [設定 IAM 政策](#bucket-key-ex-set-up-iam-policy)
+ [設定批次操作 IAM 角色](#bucket-key-ex-set-up-iam-role)
+ [為現有儲存貯體啟用 S3 儲存貯體金鑰](#bucket-key-ex-enable-s3-bucket-key-on-a-bucket)
+ [建立批次操作任務](#bucket-key-ex-create-job)
+ [執行批次操作任務](#bucket-key-ex-run-job)

### 設定 IAM 政策
<a name="bucket-key-ex-set-up-iam-policy"></a>

1. 在 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 中開啟 IAM 主控台。

1. 在左側導覽窗格中，選擇**政策**，然後選擇**建立政策**。

1. 請選擇 **JSON** 索引標籤。選擇 **Edit policy** (編輯政策)，然後新增出現在下列程式碼區塊中的 IAM 政策範例。

   將政策範例複製到您的 [IAM 主控台](https://console.aws.amazon.com/iam/)之後，請取代下列項目：

   1. 將 `amzn-s3-demo-source-bucket` 取代為要從中複製物件的來源儲存貯體名稱。

   1. 將 `amzn-s3-demo-destination-bucket` 取代為要複製物件的目的地儲存貯體名稱。

   1. 以您的資訊清單物件名稱取代 `amzn-s3-demo-manifest-bucket/manifest-key`。

   1. 將 `amzn-s3-demo-completion-report-bucket` 取代為您要儲存完成報告的儲存貯體名稱。

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

****  

   ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Sid": "CopyObjectsToEncrypt",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject",
             "s3:PutObjectTagging",
             "s3:PutObjectAcl",
             "s3:PutObjectVersionTagging",
             "s3:PutObjectVersionAcl",
             "s3:GetObject",
             "s3:GetObjectAcl",
             "s3:GetObjectTagging",
             "s3:GetObjectVersion",
             "s3:GetObjectVersionAcl",
             "s3:GetObjectVersionTagging"
           ],
           "Resource": [
             "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
             "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
           ]
         },
         {
           "Sid": "ReadManifest",
           "Effect": "Allow",
           "Action": [
             "s3:GetObject",
             "s3:GetObjectVersion"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest-key"
         },
         {
           "Sid": "WriteReport",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
         }
       ]
     }
   ```

------

1. 選擇 **Next: Tags (下一步：標籤)**。

1. 新增您想要的標籤 (選用)，然後選擇 **Next: Review** (下一步：檢閱)。

1. 新增政策名稱並選擇性輸入描述，然後選擇 **Create policy** (建立政策)。

1. 選擇 **Review policy** (檢閱政策)，然後選擇 **Save changes** (儲存變更)。

1. 現在已完成 S3 批次操作政策，主控台會將您導回 IAM **Policies** (政策) 頁面。篩選政策名稱，選擇政策名稱左側的按鈕，再選擇 **Policy actions** (政策動作)，然後選擇 **Attach** (連接)。

   若要將新建立的政策附加到 IAM 角色，請選取帳戶中適當的使用者、群組或角色，然後選擇 **Attach policy** (連接政策)。這會引導您返回 IAM 主控台。

### 設定批次操作 IAM 角色
<a name="bucket-key-ex-set-up-iam-role"></a>

1. 在 [IAM 主控台](https://console.aws.amazon.com/iam/)的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 選擇 **AWS 服務**、**S3** 以及 **S3 批次操作**。然後選擇 **Next: Permissions** (下一步：許可)。

1. 開始輸入您剛建立的 IAM **政策**名稱。選取政策名稱出現時的核取方塊，然後選擇 **Next: Tags** (下一步：標籤)。

1. (選用) 在本練習中新增標籤，或保持金鑰和值欄位空白。選擇 **Next:Review (下一步：檢閱)**。

1. 輸入角色名稱，然後接受預設描述或新增自己的描述。選擇 **Create role** (建立角色)。

1. 請確定建立任務的使用者具有以下範例中的權限。

   以您的 AWS 帳戶 ID 取代 `account-id`，並以您要套用至 IAM 角色的名稱 (稍後將在 Batch 批次操作建立步驟中建立該名稱) 來取代 `IAM-role-name`。如需詳細資訊，請參閱[授予批次操作的許可](batch-ops-iam-role-policies.md)。

   ```
               {
               "Sid": "AddIamPermissions",
               "Effect": "Allow",
               "Action": [
               "iam:GetRole",
               "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::account-id:role/IAM-role-name"
               }
   ```

### 為現有儲存貯體啟用 S3 儲存貯體金鑰
<a name="bucket-key-ex-enable-s3-bucket-key-on-a-bucket"></a>

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在**儲存貯體**清單中，選擇您要開啟 S3 儲存貯體金鑰的儲存貯體。

1. 選擇 **Properties** (屬性)。

1. 在 **Default encryption (預設加密)** 底下，選擇 **Edit (編輯)**。

1. 在**加密類型**下，您可以選擇 **Amazon S3 受管金鑰 (SSE-S3)** 或 **AWS Key Management Service 金鑰 (SSE-KMS)**。

1. 如果您選擇**AWS Key Management Service 金鑰 (SSE-KMS)**，**AWS KMS key**您可以在 下透過下列其中一個選項指定 AWS KMS 金鑰。
   + 若要從可用 KMS 金鑰清單中選擇，請選擇**從您的 AWS KMS 金鑰中選擇**。從可用金鑰清單中，然後選擇與您儲存貯體相同區域中的對稱加密 KMS 金鑰。 AWS 受管金鑰 (`aws/s3`) 和您的客戶受管金鑰都會顯示在清單中。
   + 若要輸入 KMS 金鑰 ARN，請選擇**輸入 AWS KMS 金鑰 ARN**，然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
   + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

1. 在 **Bucket Key** (儲存貯體金鑰) 底下，選擇 **Enable** (啟用)，然後選擇 **Save changes** (儲存變更)。

現在，S3 儲存貯體金鑰已在儲存貯體層級啟用，上傳、修改或複製到此儲存貯體的物件預設會繼承此加密組態。其中就包含使用 Amazon S3 批次操作複製的物件。

### 建立批次操作任務
<a name="bucket-key-ex-create-job"></a>

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在導覽窗格中，選擇 **Batch Operations** (批次操作)，然後選擇 **Create Job** (建立任務)。

1. 選擇您存放物件的 **Region** (區域)，然後選擇 **CSV** 作為資訊清單類型。

1. 輸入路徑或導覽至您先前從 S3 Select (或 Athena) 結果建立的 CSV 資訊清單檔案。如果您的資訊清單包含版本 ID，請選取該方塊。選擇 **Next (下一步)**。

1. 選擇 **Copy (複製)** 操作，然後選擇複製目的地儲存貯體。您可以保持停用伺服器端加密。只要儲存貯體目的地已啟用 S3 儲存貯體金鑰，複製操作便會在目的地儲存貯體中套用 S3 儲存貯體金鑰。

1. (選用) 視需要選擇儲存類別和其他參數。您在此步驟中指定的參數會套用至對資訊清單中所列物件執行的所有操作。選擇**下一步**。

1. 若要設定伺服器端加密，請執行下列步驟：

   1. 在**伺服器端加密**下，選擇下列其中一項：
      + 若要在將物件存放到 Amazon S3 時，保留預設伺服器端加密的儲存貯體設定，請選擇**不指定加密金鑰**。只要儲存貯體目的地已啟用 S3 儲存貯體金鑰，複製操作便會在目的地儲存貯體中套用 S3 儲存貯體金鑰。
**注意**  
若指定目的地的儲存貯體政策要求物件先加密，再存放到 Amazon S3，則您必須指定加密金鑰。否則，便無法將物件複製到目的地。
      + 若要先加密物件再存放到 Amazon S3，請選擇**指定加密金鑰**。

   1. 在**加密設定**下，若您選擇**指定加密金鑰**，則必須選擇**使用目的地儲存貯體設定做為預設加密**或**覆寫預設加密的目的地儲存貯體設定**。

   1. 若您選擇**覆寫預設加密的目的地儲存貯體設定**，則您必須設定下列加密設定。

      1. 在**加密類型**下，您必須選擇 **Amazon S3 受管金鑰 (SSE-S3)** 或 **AWS Key Management Service 金鑰 (SSE-KMS)**。SSE-S3 使用目前最強大的其中一種區塊加密法，也就是 256 位元進階加密標準 (AES-256)，來加密每個物件。SSE-KMS 可以讓您更完善地控制金鑰。如需詳細資訊，請參閱[使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密](UsingServerSideEncryption.md)及[搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)](UsingKMSEncryption.md)。

      1. 若要選擇 **AWS Key Management Service 金鑰 (SSE-KMS)**，在 **AWS KMS key** 之下，您可以透過下列其中一個選項指定 AWS KMS key 。
         + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從 中選擇 AWS KMS keys**，然後在與儲存貯體相同的區域中選擇對稱加密 KMS 金鑰。 AWS 受管金鑰 (`aws/s3`) 和您的客戶受管金鑰都會顯示在清單中。
         + 若要輸入 KMS 金鑰 ARN，請選擇**輸入 AWS KMS 金鑰 ARN**，然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
         + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

      1. 在 **Bucket Key** (儲存貯體金鑰) 底下，選擇 **Enable** (啟用)。複製操作會在目的地儲存貯體套用至 S3 儲存貯體金鑰。

1. 為您的任務提供描述 (或保留預設值)、設定其優先順序層級、選擇報告類型，並指定 **Path to completion report destination** (完成報告目的地的路徑)。

1. 在 **Permissions** (許可) 區段中，請務必選擇您先前定義的批次操作 IAM 角色。選擇 **Next (下一步)**。

1. 請在 **Review** (檢閱) 中驗證設定。如需變更，請選擇 **Previous** (上一步)。確認批次操作設定後，請選擇 **Create job** (建立任務)。

   如需詳細資訊，請參閱「[建立 S3 批次操作任務](batch-ops-create-job.md)」。

### 執行批次操作任務
<a name="bucket-key-ex-run-job"></a>

設定精靈會自動返回 Amazon S3 主控台的 S3 Batch Operations (S3 批次操作) 區段。在 S3 開始該過程後，您的新任務會從 **New** (全新) 狀態轉換為 **Preparing** (正在準備) 狀態。在 Preparing (準備) 狀態期間，S3 會讀取工作的資訊清單、檢查工作是否有錯誤，並計算物件數量。

1. 選擇 Amazon S3 主控台中的重新整理按鈕，以檢查進度。依資訊清單大小而定，讀取可能需要幾分鐘或幾小時。

1. 在 S3 完成讀取任務的資訊清單後，任務會移 至**Awaiting your confirmation** (等待確認) 狀態。選擇任務 ID 左側的選項按鈕，然後選擇 **Run job** (執行任務)。

1. 檢查任務的設定，然後選擇右下角的 **Run job** (執行任務)。

   在任務開始執行後，您可以選擇重新整理按鈕，透過主控台儀表板檢視或選取特定任務來檢查進度。

1. 在任務完成時，您可以檢視 **Successful** (成功) 和 **Failed** (失敗) 的物件計數，以確認所有內容都如預期般執行。如果您已啟用任務報告，請檢查任務報告，以了解任何操作失敗的確切原因。

   您也可以使用、 AWS CLI AWS SDKs或 Amazon S3 REST API 來執行這些步驟。如需追蹤任務狀態和完成報告的詳細資訊，請參閱「[追蹤任務狀態和完成報告](batch-ops-job-status.md)」。

如需使用 AWS CLI 和 顯示具有標籤的複製操作範例 適用於 Java 的 AWS SDK，請參閱 [建立具有任務標籤 (用於標示) 的批次作業任務](batch-ops-tags-create.md)。