本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如何使用條件式讀取根據中繼資料擷取或複製物件
透過條件式讀取,您可以將額外的標頭新增至讀取請求,以便將先決條件新增至 S3 操作。如果不符合這些先決條件,讀取請求將會失敗。
您可以在 GET
、HEAD
或 COPY
請求上使用條件式讀取,只根據物件的中繼資料傳回物件。
當您上傳物件時,Amazon S3 會建立只能由 S3 修改的系統控制中繼資料。實體標籤 (ETags) 和上次修改日期都是系統控制中繼資料的範例。物件的 ETag 是代表物件特定版本的字串。上次修改日期是代表物件建立日期或上次修改日期 (以最近者為準) 的中繼資料。
透過條件式讀取,您可以根據物件的 ETag 或上次修改日期傳回物件。您可以在請求中指定 ETag 值,只有在 ETag 值相符時,才能傳回物件。這可確保您只傳回或複製特定版本的物件。您可以在讀取請求中指定上次修改日期值,只有在物件自您提供日期以來已經過修改時,才能傳回物件。
支援的 API
下列 S3 API 支援使用條件式讀取:
您可以使用下列標頭,根據實體標籤 (ETag) 或上次修改日期傳回物件。如需 ETag 和上次修改日期等物件中繼資料的詳細資訊,請參閱系統定義的物件中繼資料。
GetObject
-
If-Match
— 只有在物件的 ETag 符合提供的 ETag 時,才能傳回物件。 -
If-Modified-Since
— 只有在物件自指定時間以來已經過修改時,才能傳回物件。 -
If-None-Match
— 只有在物件的 ETag 不符合提供的 ETag 時,才能傳回物件。 -
If-Unmodified-Since
— 只有在物件自指定時間以來尚未經過修改時,才能傳回物件。
如需這些標頭、傳回的錯誤和 S3 在單一請求中處理多個條件式標頭之順序的詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的GetObject。
HeadObject
-
If-Match
— 只有在物件的 ETag 符合提供的 ETag 時,才能傳回物件。 -
If-Modified-Since
— 只有在物件自指定時間以來已經過修改時,才能傳回物件。 -
If-None-Match
— 只有在物件的 ETag 不符合提供的 ETag 時,才能傳回物件。 -
If-Unmodified-Since
— 只有在物件自指定時間以來尚未經過修改時,才能傳回物件。
如需這些標頭、傳回的錯誤和 S3 在單一請求中處理多個條件式標頭之順序的詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的HeadObject。
CopyObject
-
x-amz-copy-source-if-match
— 只有在來源物件的 ETag 符合提供的 ETag 時,才能複製來源物件。 -
x-amz-copy-source-if-modified-since
— 只有在來源物件自指定時間以來已經過修改時,才能複製來源物件。 -
x-amz-copy-source-if-none-match
— 只有在來源物件的 ETag 不符合提供的 ETag 時,才能複製來源物件。 -
x-amz-copy-source-if-unmodified-since
— 只有在來源物件自指定時間以來尚未經過修改時,才能複製來源物件。
如需這些標頭、傳回的錯誤和 S3 在單一請求中處理多個條件式標頭之順序的詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的CopyObject。