Skip to main content
此產品有較新版本可以使用。
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

CopyObject

貢獻者

您可以使用 S3 CopyObject 要求來建立已儲存在 S3 中的物件複本。CopyObject 作業與執行 GetObject 之後的 PutObject 相同。

解決衝突

衝突的用戶端要求(例如兩個寫入同一個金鑰的用戶端)會以「最新致勝」的方式解決。「最新致勝」評估的時間取決於StorageGRID 何時由VMware系統完成指定的要求、而非S3用戶端開始作業的時間。

物件大小

單一 PutObject 作業的最大大小 _ 建議 _ 為 5 GiB ( 5 、 368 、 709 、 120 位元組)。如果物件大於 5 GiB 、請使用 "多部分上傳" 而是。

單一 PutObject 作業的最大 _ 支援 _ 大小為 5 TiB ( 5 、 497 、 558 、 138 、 880 位元組)。

註 如果您從 StorageGRID 11.6 或更早版本升級、當您嘗試上傳超過 5 GiB 的物件時、會觸發 S3 「將物件大小設得太大」警示。如果您有新的 StorageGRID 11.7 或 11.8 安裝、在這種情況下不會觸發警示。不過、為了符合 AWS S3 標準、未來的 StorageGRID 版本不支援上傳大於 5 GiB 的物件。

使用者中繼資料中的UTF-8字元

如果要求在使用者定義的中繼資料金鑰名稱或值中包含(未轉義)utf-8值、StorageGRID 則無法定義任何不正常的行為。

不剖析或解譯使用者定義之中繼資料的金鑰名稱或值中包含的轉義式utf-8字元。StorageGRID轉義的UTF-8字元會視為Ascii字元:

  • 如果使用者定義的中繼資料包含轉義的utf-8字元、則要求會成功。

  • 無法歸還StorageGRID x-amz-missing-meta 標頭:金鑰名稱或值的解譯值包含不可列印的字元。

支援的要求標頭

支援下列要求標頭:

  • Content-Type

  • x-amz-copy-source

  • x-amz-copy-source-if-match

  • x-amz-copy-source-if-none-match

  • x-amz-copy-source-if-unmodified-since

  • x-amz-copy-source-if-modified-since

  • x-amz-meta-,然後是包含使用者定義中繼資料的名稱值配對

  • x-amz-metadata-directive:預設值為 `COPY`可讓您複製物件及相關的中繼資料。

    您可以指定 REPLACE 可在複製物件時覆寫現有的中繼資料、或更新物件中繼資料。

  • x-amz-storage-class

  • x-amz-tagging-directive:預設值為 `COPY`可讓您複製物件和所有標記。

    您可以指定 REPLACE 覆寫複製物件時的現有標記、或更新標記。

  • S3物件鎖定要求標頭:

    • x-amz-object-lock-mode

    • x-amz-object-lock-retain-until-date

    • x-amz-object-lock-legal-hold

      如果要求是在沒有這些標頭的情況下提出、則貯體預設保留設定會用於計算物件版本模式並保留至最新日期。請參閱 "使用 S3 REST API 來設定 S3 物件鎖定"

  • SSe要求標頭:

    • x-amz-copy-source​-server-side​-encryption​-customer-algorithm

    • x-amz-copy-source​-server-side-encryption-customer-key

    • x-amz-copy-source​-server-side-encryption-customer-key-MD5

    • x-amz-server-side-encryption

    • x-amz-server-side-encryption-customer-key-MD5

    • x-amz-server-side-encryption-customer-key

    • x-amz-server-side-encryption-customer-algorithm

不支援的要求標頭

不支援下列要求標頭:

  • Cache-Control

  • Content-Disposition

  • Content-Encoding

  • Content-Language

  • Expires

  • x-amz-website-redirect-location

儲存類別選項

x-amz-storage-class 支援要求標頭、如果相符的 ILM 規則使用雙重提交或平衡、則會影響 StorageGRID 建立的物件複本數量 "擷取選項"

  • STANDARD

    (預設)當ILM規則使用雙重提交選項、或平衡選項回到建立臨時複本時、指定雙重提交擷取作業。

  • REDUCED_REDUNDANCY

    當ILM規則使用雙重提交選項、或平衡選項回到建立過渡複本時、指定單一提交擷取作業。

    註 如果您將物件擷取至啟用S3物件鎖定的儲存區、則會顯示 REDUCED_REDUNDANCY 選項會被忽略。如果您要將物件擷取至舊版相容的儲存區、請使用 REDUCED_REDUNDANCY 選項會傳回錯誤。執行「雙重承諾」的程序時、務必確保符合法規遵循要求。StorageGRID

在 CopyObject 中使用 x-amz-copy-source

如果來源儲存區和金鑰、請在中指定 x-amz-copy-source 標頭與目的地桶和金鑰不同、來源物件資料的複本會寫入目的地。

如果來源和目的地相符、則會顯示和 x-amz-metadata-directive 標頭指定為 REPLACE、會以要求中提供的中繼資料值來更新物件的中繼資料。在這種情況StorageGRID 下、無法重新擷取物件。這有兩個重要後果:

  • 您無法使用 CopyObject 來加密現有物件、或變更現有物件的加密。如果您提供 x-amz-server-side-encryption 標頭或 x-amz-server-side-encryption-customer-algorithm 標頭StorageGRID 、不接受要求並退貨 XNotImplemented

  • 不會使用相符ILM規則中指定的擷取行為選項。當ILM由正常背景ILM程序重新評估時、會對更新所觸發的物件放置位置進行任何變更。

    這表示、如果 ILM 規則使用嚴格選項來擷取行為、則無法在無法進行所需物件放置時(例如、因為新要求的位置無法使用)、就不會採取任何行動。更新後的物件會保留其目前的放置位置、直到能夠放置所需的位置為止。

要求伺服器端加密的標頭

如果您 "使用伺服器端加密"、您提供的要求標頭取決於來源物件是否已加密、以及您是否打算加密目標物件。

  • 如果來源物件是使用客戶提供的金鑰( SSE-C )加密、則必須在 CopyObject 要求中包含下列三個標頭、以便將物件解密後再複製:

    • x-amz-copy-source​-server-side​-encryption​-customer-algorithm:指定 AES256

    • x-amz-copy-source​-server-side-encryption-customer-key:指定在創建源對象時提供的加密密鑰。

    • x-amz-copy-source​-server-side-encryption-customer-key-MD5:指定在創建源對象時提供的md5摘要。

  • 如果您要使用您提供及管理的唯一金鑰來加密目標物件(複本)、請包含下列三個標頭:

    • x-amz-server-side-encryption-customer-algorithm:指定 AES256

    • x-amz-server-side-encryption-customer-key:指定目標物件的新加密金鑰。

    • x-amz-server-side-encryption-customer-key-MD5:指定新加密金鑰的md5摘要。

    警告 您提供的加密金鑰永遠不會儲存。如果您遺失加密金鑰、就會遺失對應的物件。在使用客戶提供的金鑰來保護物件資料之前、請先檢閱的考量事項 "使用伺服器端加密"
  • 如果您要使用由 StorageGRID ( SSE )管理的唯一金鑰來加密目標物件(複本)、請在 CopyObject 要求中加入此標頭:

    • x-amz-server-side-encryption

      註 server-side-encryption 物件的值無法更新。改用新的複本 server-side-encryption 使用價值 x-amz-metadata-directiveREPLACE

版本管理

如果來源儲存區已版本化、您可以使用 x-amz-copy-source 標頭以複製物件的最新版本。若要複製物件的特定版本、您必須使用明確指定要複製的版本 versionId 子資源:如果目標儲存區已版本化、則會在中傳回所產生的版本 x-amz-version-id 回應標頭:如果目標儲存區的版本設定已暫停、則 x-amz-version-id 傳回「 null 」值。