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

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

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

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

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

許可

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

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

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

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

    如需詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 CopyObject

加密

Amazon S3 會自動加密上傳到 S3 儲存貯體的所有新物件。S3 儲存貯體的預設加密組態一律為啟用狀態,且最低限度設定為使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密。

對於目錄值區,僅支援 SSE-S3。對於一般用途值區,您可以使用 SSE-S3 (預設值)、使用 () 金鑰 AWS Key Management Service (SSE-KMS AWS KMS) 的伺服器端加密、使用金鑰的雙層伺服器端加密 (DSSE-KMS),或使用客戶提供的金 AWS KMS 鑰 (SSE-C) 進行伺服器端加密。

如果您提出複製要求,將目錄儲存貯體上的 SSE-C、SSE-KMS 或 DSSE-KMS 參數設定為來源或目的地,則回應會傳回錯誤訊息,

標籤

目錄儲存貯體不支援標籤。如果您將具有標籤的物件從一般用途值區複製到目錄儲存貯體,就會收到 HTTP 501 (Not Implemented) 回應。如需詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 CopyObject

ETag

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

其他檢查總和

S3 Express One Zone 可讓您選擇用於在上傳或下載過程中驗證資料的檢查總和演算法選項。您可以選擇以下 Secure Hash 演算法 (SHA) 或循環宂餘檢查 (CRC) 資料完整性演算法之一:CRC32、CRC32C、SHA-1 和 SHA-256。S3 快速單區域儲存類別不支援以 MD5 為基礎的總和檢查碼。

如需詳細資訊,請參閱 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

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