複製對象
您可以使用 S3 CopyObject 請求來建立已儲存在 S3 中的物件的副本。 CopyObject 操作與執行 GetObject 後再執行 PutObject 操作相同。
解決衝突
衝突的客戶端請求(例如兩個客戶端寫入同一個金鑰)將根據「最新勝利」的原則解決。 「最新勝利」評估的時間取決於StorageGRID系統完成給定請求的時間,而不是 S3 用戶端開始操作的時間。
物件大小
單一 PutObject 操作的最大_建議_大小為 5 GiB(5,368,709,120 位元組)。如果您有大於 5 GiB 的對象,請使用"分段上傳"反而。
單一 PutObject 操作支援的最大大小為 5 TiB(5,497,558,138,880 位元組)。
|
|
如果您從StorageGRID 11.6 或更早版本升級,則當您嘗試上傳超過 5 GiB 的物件時,將觸發 S3 PUT 物件大小過大警報。如果您新安裝了StorageGRID 11.7 或 11.8,則在這種情況下不會觸發警報。但是,為了與 AWS S3 標準保持一致, StorageGRID的未來版本將不支援上傳大於 5 GiB 的物件。 |
用戶元資料中的 UTF-8 字符
如果請求在使用者定義元資料的鍵名或值中包含(未轉義的)UTF-8 值,則StorageGRID行為未定義。
StorageGRID不會解析或解釋使用者定義元資料的鍵名或值中包含的轉義 UTF-8 字元。轉義的 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-checksum-algorithm當您複製物件時,如果來源物件具有校驗和, StorageGRID不會將該校驗和值複製到新物件。無論您是否嘗試使用 `x-amz-checksum-algorithm`在物件請求中。
-
x-amz-website-redirect-location
儲存類別選項
這 `x-amz-storage-class`支援請求標頭,並且會影響StorageGRID在符合的 ILM 規則使用雙重提交或平衡時建立的物件副本數量"攝取選項"。
-
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 規則中指定的 Ingest Behavior 選項。當 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-directive:REPLACE。
-
版本控制
如果來源儲存桶已版本化,則可以使用 `x-amz-copy-source`標頭來複製物件的最新版本。要複製物件的特定版本,必須使用 `versionId`子資源。如果目標儲存桶有版本控制,則產生的版本將傳回 `x-amz-version-id`響應頭。如果目標儲存桶的版本控制已暫停,則 `x-amz-version-id`傳回“null”值。