將物件複製到目錄儲存貯體 - Amazon Simple Storage Service

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

將物件複製到目錄儲存貯體

該複製操作會為已存放在 Amazon S3 中的物件建立複本。您可以在目錄儲存貯體和一般用途儲存貯體之間複製物件。您也可以在儲存貯體內以及相同類型的儲存貯體之間複製物件,例如從目錄儲存貯體複製到目錄儲存貯體。

您可以在單一原子作業中建立最多 5 GB 的物件副本。不過,若要複製大於 5 GB 的物件,您必須使用分段上傳API作業。如需詳細資訊,請參閱搭配目錄儲存貯體使用多部分上傳

許可

若要複製物件,您必須具有下列許可:

  • 若要在目錄儲存貯體之間複製物件,您必須具有 s3express:CreateSession 許可。

  • 若要將物件從目錄儲存貯體複製到一般用途儲存貯體,您必須具有 s3express:CreateSession 許可和 s3:PutObject 許可,以將複製的物件寫入目的地儲存貯體。

  • 若要將物件從一般用途值區複製到目錄值區,您必須擁有讀取要複製之來源物件的s3:GetObject權限和權限。s3express:CreateSession

    如需詳細資訊,請參閱 CopyObjectAmazon 簡單存儲服務API參考中。

加密

Amazon S3 會自動加密上傳到 S3 儲存貯體的所有新物件。S3 儲存貯體的預設加密組態始終處於啟用狀態,並使用 Amazon S3 受管金鑰 (SSE-S3) 至少設定為伺服器端加密。

對於目錄存儲桶,SSE-S3 和服務器端加密 AWS Key Management Service (AWS KMS) 鍵 (SSE-KMS) 支援。當目的地值區是目錄儲存貯體時,建議目的地儲存貯體的預設加密使用所需的加密組態,而且不要覆寫值區預設加密。然後,新物件會使用所需的加密設定自動加密。此外,當您將KMS加密的物件從一般用途儲存貯體複製SSE到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體,或在目錄儲存貯體之間複製時,不支援 S3 儲存貯體金鑰 CopyObject。 在這種情況下,Amazon S3 打電話 AWS KMS 每次對KMS加密對象發出複製請求時。如需目錄值區中加密覆寫行為的詳細資訊,請參閱使用以下指定伺服器端加密 AWS KMS 用於新對象上傳

對於一般用途存儲桶,您可以使用 SSE-S3(默認),服務器端加密 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)、雙層伺服器端加密 AWS KMS 金鑰 (DSSE-KMS),或使用客戶提供的金鑰 (SSE-C) 進行伺服器端加密。

如果您提出的複製要求指定在目錄值區 (來源KMS或目的地值區) 使用 DSSE-或 SSE-C,則回應會傳回錯誤。

標籤

目錄儲存貯體不支援標籤。如果您將具有標籤的物件從一般用途值區複製到目錄值區,就會收到HTTP501 (Not Implemented)回應。如需詳細資訊,請參閱 CopyObjectAmazon 簡單存儲服務API參考中。

ETags

S3 Express 單一區域的實體標籤 (ETags) 是隨機字母數字字串,不是MD5總和檢查碼。若要協助確保物件完整性,請使用其他總和檢查碼。

其他檢查總和

S3 Express One Zone 可讓您選擇用於在上傳或下載過程中驗證資料的檢查總和演算法選項。您可以選取下列其中一個安全雜湊演算法 (SHA) 或循環冗餘檢查 (CRC) 資料完整性檢查演算法:CRC32、CRC32C、SHA -1 和 SHA -256。MD5S3 Express 單區儲存類別不支援以總和檢查為基礎的總和檢查。

如需詳細資訊,請參閱S3 其他檢查總和最佳實務

支援的功能

如需 S3 快速單區域支援哪些 Amazon S3 功能的詳細資訊,請參閱S3 Express One Zone 有什麼不同?

將物件從一般用途值區或目錄值區複製到目錄值區
  1. 登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 選擇您要從中複製物件的值區:

    • 若要從一般用途值區進行複製,請選擇「一般用途時段」頁標。

    • 若要從目錄值區進行複製,請選擇 [目錄值區] 索引標籤。

  4. 選擇包含您要複製之物件的一般用途值區或目錄值區。

  5. 選擇 Objects (物件) 索引標籤。在「物件」頁面上,選取您要複製之物件名稱左側的核取方塊。

  6. Actions (動作) 功能表上,選擇 Copy (複製)

    便會顯示「複製」頁面。

  7. 在「的地」下,選擇目的地類型的「目錄值區」。若要指定目的地路徑,請選擇瀏覽 S3,導覽至目的地,然後選擇目的地左側的選項按鈕。選擇右下角的 Choose destination (選擇目的地)。

    或者,輸入目的地路徑。

  8. 在「總和檢查」(Check sum) 底下,選擇是否要使用現有的總和檢查碼功能複製物件,或以新的總和檢查碼功能取代現有的總和檢查碼函數。上傳物件時,您可以選擇指定用於驗證資料完整性的檢查總和演算法。複製物件時,您可以選擇一個新函數。如果您最初沒有指定額外的校驗和,則可以使用 e 校驗和部分添加一個。

    注意

    即使您選擇使用相同的總和檢查碼函數,如果物件大小超過 16 MB,您的總和檢查碼值也可能會變更。檢查總和的值可能會因為計算分段上傳檢查總和而變更。如需複製物件時檢查總和會如何變化的詳細資訊,請參閱「對分段上傳使用部分檢查總和」。

    若要變更檢查總和函數,請選擇Replace with a new checksum function (替換為新的檢查總和函數)。從下拉列表中選擇新的校驗和功能。複製物件時,會使用指定的演算法來計算和儲存新的總和檢查碼。

  9. 選擇右下角的 Copy (複製)。Amazon S3 會將您的物件複製到目的地。

將物件從目錄儲存貯體複製到一般用途儲存貯體
  1. 登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 選擇「目錄值區」頁標。

  4. 選擇包含您要複製之物件的目錄值區。

  5. 選擇 Objects (物件) 索引標籤。在「物件」頁面上,選取您要複製之物件名稱左側的核取方塊。

  6. Actions (動作) 功能表上,選擇 Copy (複製)

  7. 在「的地」下,選擇目的地類型的「一般用途值區」。若要指定目的地路徑,請選擇瀏覽 S3,導覽至目的地,然後選擇目的地左側的選項按鈕。選擇右下角的 Choose destination (選擇目的地)。

    或者,輸入目的地路徑。

  8. 在「總和檢查」(Check sum) 底下,選擇是否要使用現有的總和檢查碼功能複製物件,或以新的總和檢查碼功能取代現有的總和檢查碼函數。上傳物件時,您可以選擇指定用於驗證資料完整性的檢查總和演算法。複製物件時,您可以選擇一個新函數。如果您原本沒有指定額外的總和檢查碼,您可以使用 [總和檢查碼] 區段來新增一個總和檢查碼

    注意

    即使您選擇使用相同的總和檢查碼函數,如果物件大小超過 16 MB,您的總和檢查碼值也可能會變更。檢查總和的值可能會因為計算分段上傳檢查總和而變更。如需複製物件時檢查總和會如何變化的詳細資訊,請參閱「對分段上傳使用部分檢查總和」。

    若要變更檢查總和函數,請選擇Replace with a new checksum function (替換為新的檢查總和函數)。從下拉列表中選擇新的校驗和功能。複製物件時,會使用指定的演算法來計算和儲存新的總和檢查碼。

  9. 選擇右下角的 Copy (複製)。Amazon S3 會將您的物件複製到目的地。

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

下面的示copy-object例命令顯示了如何使用 AWS CLI 將物件從一個值區複製到另一個值區。您可以在值區類型之間複製物件。若要執行此命令,請以您自己的資訊取代使用者輸入預留位置。

aws s3api copy-object --copy-source bucket SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

如需詳細資訊,請參閱 copy-object 中的 AWS CLI 指令參考