

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

# 如何使用條件式讀取根據中繼資料擷取或複製物件
<a name="conditional-reads"></a>

透過條件式讀取，您可以將額外的標頭新增至讀取請求，以便將先決條件新增至 S3 操作。如果不符合這些先決條件，讀取請求將會失敗。

您可以在 `GET`、`HEAD` 或 `COPY` 請求上使用條件式讀取，只根據物件的中繼資料傳回物件。

當您上傳物件時，Amazon S3 會建立只能由 S3 修改的系統控制中繼資料。實體標籤 (ETags) 和上次修改日期都是系統控制中繼資料的範例。物件的 ETag 是代表物件特定版本的字串。上次修改日期是代表物件建立日期或上次修改日期 (以最近者為準) 的中繼資料。

透過條件式讀取，您可以根據物件的 ETag 或上次修改日期傳回物件。您可以在請求中指定 ETag 值，只有在 ETag 值相符時，才能傳回物件。這可確保您只傳回或複製特定版本的物件。您可以在讀取請求中指定上次修改日期值，只有在物件自您提供日期以來已經過修改時，才能傳回物件。

## 支援的 API
<a name="conditional-read-apis"></a>

下列 S3 API 支援使用條件式讀取：
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

您可以使用下列標頭，根據實體標籤 (ETag) 或上次修改日期傳回物件。如需 ETag 和上次修改日期等物件中繼資料的詳細資訊，請參閱[系統定義的物件中繼資料](UsingMetadata.md#SysMetadata)。

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)**  

+ `If-Match` — 只有在物件的 ETag 符合提供的 ETag 時，才能傳回物件。
+ `If-Modified-Since` — 只有在物件自指定時間以來已經過修改時，才能傳回物件。
+ `If-None-Match` — 只有在物件的 ETag 不符合提供的 ETag 時，才能傳回物件。
+ `If-Unmodified-Since` — 只有在物件自指定時間以來尚未經過修改時，才能傳回物件。

如需這些標頭、傳回的錯誤和 S3 在單一請求中處理多個條件式標頭之順序的詳細資訊，請參閱 Amazon Simple Storage Service API 參考中的[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)。

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)**  

+ `If-Match` — 只有在物件的 ETag 符合提供的 ETag 時，才能傳回物件。
+ `If-Modified-Since` — 只有在物件自指定時間以來已經過修改時，才能傳回物件。
+ `If-None-Match` — 只有在物件的 ETag 不符合提供的 ETag 時，才能傳回物件。
+ `If-Unmodified-Since` — 只有在物件自指定時間以來尚未經過修改時，才能傳回物件。

如需這些標頭、傳回的錯誤和 S3 在單一請求中處理多個條件式標頭之順序的詳細資訊，請參閱 Amazon Simple Storage Service API 參考中的[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)。

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)**  

+ `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` — 只有在來源物件自指定時間以來尚未經過修改時，才能複製來源物件。
+ `If-Match` — 僅在物件的 ETag 符合提供的 ETag 時，才會複製物件。 `If-Match`預期 ETag 值為字串。
+ `If-None-Match` — 只有在物件的 ETag 與提供的 ETag 不相符時，才會複製物件。 `If-None-Match`預期 '\$1' （星號） 字元。

如需這些標頭、傳回的錯誤和 S3 在單一請求中處理多個條件式標頭之順序的詳細資訊，請參閱 Amazon Simple Storage Service API 參考中的[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)。