

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

# 使用物件中繼資料
<a name="UsingMetadata"></a>

Amazon S3 中的物件中繼資料有兩種：「系統定義的中繼資料」**和「使用者定義的中繼資料」**。系統定義的中繼資料包括物件建立日期、大小和儲存類別等中繼資料。使用者定義的中繼資料是您可以在上傳物件時選擇設定的中繼資料。使用者定義的中繼資料是一組名稱/值對。如需詳細資訊，請參閱 [系統定義的物件中繼資料](#SysMetadata) 及 [使用者定義的物件中繼資料](#UserMetadata)。

建立物件時，您可以指定能在 Amazon S3 儲存貯體中唯一識別物件的「物件金鑰」**(或「金鑰名稱」**)。如需詳細資訊，請參閱[命名 Amazon S3 物件](object-keys.md)。您也可以在上傳物件時，在 Amazon S3 中設定[使用者定義的中繼資料](#UserMetadata)。

上傳物件之後，即無法修改此使用者定義的中繼資料。修改此中繼資料的唯一方式是先建立物件的複本，再設定中繼資料。如需使用 Amazon S3 主控台編輯中繼資料的詳細資訊，請參閱[在 Amazon S3 主控台中編輯物件中繼資料](add-object-metadata.md)。

**使用 S3 Metadata 查詢中繼資料並加速資料探索**  
若要輕鬆尋找、儲存和查詢 S3 物件的中繼資料，您可以使用 S3 Metadata。透過 S3 Metadata，您可以快速準備資料，以用於商業分析、內容擷取、人工智慧和機器學習 (AI/ML) 模型訓練等。

S3 Metadata 透過自動擷取一般用途儲存貯體中物件的中繼資料，並將其儲存在您可以查詢的唯讀、全受管 Apache Iceberg 資料表中，從而加速資料探索。這些唯讀資料表稱為「中繼資料表」**。當您在一般用途儲存貯體中新增、更新和移除物件時，S3 Metadata 會自動重新整理對應的中繼資料表，以反映最新的變更。

根據預設，S3 Metadata 提供[系統定義的物件中繼資料](#SysMetadata) (例如物件的建立時間和儲存類別)，以及自訂中繼資料 (例如在物件上傳期間包含的標籤和[使用者定義的中繼資料](#UserMetadata))。S3 Metadata 也提供事件中繼資料，例如物件更新或刪除的時間，以及 AWS 帳戶 發出請求的 。

中繼資料表儲存在 S3 資料表儲存貯體中，提供針對表格式資料最佳化的儲存體。若要查詢中繼資料，您可以將資料表儲存貯體與 AWS 分析服務整合，例如 Amazon Athena、Amazon Redshift 和 Amazon Quick。

如需 S3 Metadata 的詳細資訊，請參閱[S3 Metadata 資料表探索您的資料](metadata-tables-overview.md)。

## 系統定義的物件中繼資料
<a name="SysMetadata"></a>

若是存放在儲存貯體中的每個物件，Amazon S3 會保留一組系統中繼資料。Amazon S3 會視需要處理此系統中繼資料。例如，Amazon S3 會保留物件建立日期與大小中繼資料，以便在物件管理過程中會使用這項資訊。

系統中繼資料可分為兩類：
+ **系統控制** – 物件建立日期之類的中繼資料由系統控制，這表示只有 Amazon S3 才能修改日期值。
+ **使用者控制** – 另一種系統中繼資料的範例包括為物件所設定的儲存體方案，以及物件是否已啟用伺服器端加密，您可以控制這類系統中繼資料的值。如果您的儲存貯體設定為網站，可能有時會希望將頁面請求重新導向至其他頁面或外部 URL。在此情況下，網頁即為您儲存貯體中的物件。Amazon S3 會將頁面重新導向值儲存為您可以控制的系統中繼資料。

  當您建立物件時，可以設定這些系統中繼資料項目的值，或視需要更新這些值。如需儲存體方案的詳細資訊，請參閱「[了解和管理 Amazon S3 儲存類別](storage-class-intro.md)」。

  Amazon S3 使用 AWS KMS 金鑰來加密 Amazon S3 物件。 只會 AWS KMS 加密物件資料。檢查總和以及指定的演算法會儲存為物件中繼資料的一部分。若物件要求伺服器端加密，檢查總和會以加密形式儲存。如需伺服器端加密的詳細資訊，請參閱「[使用加密來保護資料](UsingEncryption.md)」。

**注意**  
`PUT` 要求標頭的大小限制為 8 KB。在 `PUT` 要求標頭中，系統定義中繼資料的大小限制為 2 KB。測量系統定義中繼資料大小的方式，是透過計算每個索引鍵和值之 US-ASCII 編碼中的位元組數目加總。

下表提供系統定義的中繼資料的清單，並指出您是否可更新這些中繼資料。


| 名稱 | 描述 | 使用者是否可以修改值？ | 
| --- | --- | --- | 
| Date | 目前的日期與時間。 | 否 | 
| Cache-Control | 用於指定快取政策的一般標頭欄位。 | 是 | 
| Content-Disposition | 物件表示資訊。 | 是 | 
| Content-Encoding | 已套用至物件資料的內容編碼 (例如壓縮) | 是 | 
| Content-Length | 物件大小 (位元組)。 | 否 | 
| Content-Type | 物件的類型。 | 是 | 
| Last-Modified | 物件建立日期或上次修改日期，以最近者為準。對於分段上傳，物件建立日期是指啟動分段上傳的日期。 | 否 | 
| ETag | 表示物件特定版本的實體標籤 (ETag)。對於未做為分段上傳上傳且未加密或透過使用 Amazon S3 受管金鑰 (SSE-S3) 之伺服器端加密來進行加密的物件，ETag 是資料的 MD5 Digest。 | 否 | 
| x-amz-server-side-encryption | 指出物件是否啟用伺服器端加密的標頭，以及該加密是使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 還是使用 Amazon S3 受管加密金鑰 (SSE-S3)。如需詳細資訊，請參閱[使用伺服器端加密保護資料](serv-side-encryption.md)。 | 是 | 
| x-amz-checksum-crc64nvme, x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-sha1, x-amz-checksum-sha256 | 包含物件檢查總和或摘要的標題。根據您指示 Amazon S3 使用的檢查總和演算法，最多可以一次設定其中一個標頭。如需選擇檢查總和演算法的詳細資訊，請參閱「[在 Amazon S3 中檢查物件完整性](checking-object-integrity.md)」。 | 否 | 
| x-amz-checksum-type | 檢查總和類型，決定如何結合組件層級檢查總和，以建立多組件物件的物件層級檢查總和。 | 是 | 
| x-amz-version-id | 物件版本控制。當您啟用儲存貯體的版本控制時，Amazon S3 會將版本 ID 指派給已新增至儲存貯體的物件。如需詳細資訊，請參閱[使用 S3 版本控制保留多個版本的物件](Versioning.md)。 | 否 | 
| x-amz-delete-marker | 指出物件是否為刪除標記的布林值標記。此標記僅用於已啟用版本控制的版本控制， | 否 | 
| x-amz-storage-class | 用於存放物件的儲存體方案。如需詳細資訊，請參閱[了解和管理 Amazon S3 儲存類別](storage-class-intro.md)。 | 是 | 
| x-amz-website-redirect-location |  將關聯物件重新導向至相同儲存貯體中的其他物件或外部 URL 的標題。如需詳細資訊，請參閱[(選用) 配置網頁重新導向](how-to-page-redirect.md)。 | 是 | 
| x-amz-server-side-encryption-aws-kms-key-id | 標頭，指出用來加密物件的對稱加密 KMS AWS KMS 金鑰 ID。只有當 x-amz-server-side-encryption 標題存在且具有 aws:kms 值的時候，才會使用此標題。 | 是 | 
| x-amz-server-side-encryption-customer-algorithm | 指出是否已啟用由客戶提供加密金鑰的伺服器端加密 (SSE-C) 的標題。如需詳細資訊，請參閱[搭配客戶提供的金鑰 (SSE-C) 使用伺服器端加密](ServerSideEncryptionCustomerKeys.md)。 | 是 | 
| x-amz-tagging | 物件的標籤集。標籤集必須編碼為 URL 查詢參數。 | 是 | 

## 使用者定義的物件中繼資料
<a name="UserMetadata"></a>

您也可以在上傳物件時，將中繼資料指派給物件。您可以在傳送 `PUT` 或 `POST` 要求來建立物件時，以名稱/值 (金鑰/值) 對的形式提供這項選用資訊。當您使用 REST API 上傳物件時，選用的使用者定義中繼資料名稱必須以 `x-amz-meta-` 開頭，以便與其他 HTTP 標頭有所區別。當您使用 REST API 擷取物件時，會傳回此字首。當您使用 SOAP API 上傳物件時，不需要此字首。當您使用 SOAP API 擷取物件時，不論用於上傳物件的 API 為何，都會移除此字首。

**注意**  
 Amazon S3 的 SOAP API 不適用於新客戶，並且將於 2025 年 8 月 31 日接近生命週期結束 (EOL)。我們建議您使用 REST API 或 AWS SDKs。

透過 REST API 擷取中繼資料時，Amazon S3 會將具有相同名稱 (忽略大小寫) 的標頭合併成一份以逗號分隔的清單。如果某些中繼資料包含無法列印的字元，就不會傳回。反之，傳回的會是 `x-amz-missing-meta` 標頭，其值為無法列印的中繼資料項目數。該 `HeadObject` 動作從一個物件擷取中繼資料，而不傳回物件本身。如果您只對物件的中繼資料感興趣，此操作非常有用。若要使用 `HEAD`，您必須具有物件的 `READ` 存取權。如需詳細資訊，請參閱《 Amazon Simple Storage Service API 參考》**中的 [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)。

使用者定義的中繼資料是一組金鑰/值對。Amazon S3 會以小寫存放使用者定義的中繼資料金鑰。

Amazon S3 會允許在您的中繼資料值中有任意 Unicode 字元。

為了避免有關呈現這些中繼資料值的問題，使用 REST 時應該遵從使用 US-ASCII 字元，以及使用 SOAP 或透過 `POST` 的瀏覽器式上傳時應該遵從使用 UTF-8。

在中繼資料值中使用非 US-ASCII 字元時，會檢查提供的 Unicode 字串是否有非 US-ASCII 字元。這些標題的值是在儲存之前依據 [RFC 2047](https://datatracker.ietf.org/doc/html/rfc2047) 僅需解碼，然後依據 [RFC 2047](https://datatracker.ietf.org/doc/html/rfc2047) 進行編碼，以便在傳回之前使其能夠安全地以電子郵件寄送。如果字串只包含 US-ASCII 字元，則會依原樣呈現。

下列是 範例。

```
PUT /Key HTTP/1.1
Host: {{amzn-s3-demo-bucket}}.s3.amazonaws.com
x-amz-meta-nonascii: ÄMÄZÕÑ S3

HEAD /Key HTTP/1.1
Host: {{amzn-s3-demo-bucket}}.s3.amazonaws.com
x-amz-meta-nonascii: =?UTF-8?B?w4PChE3Dg8KEWsODwpXDg8KRIFMz?=

PUT /Key HTTP/1.1
Host: {{amzn-s3-demo-bucket}}.s3.amazonaws.com
x-amz-meta-ascii: AMAZONS3

HEAD /Key HTTP/1.1
Host: {{amzn-s3-demo-bucket}}.s3.amazonaws.com
x-amz-meta-ascii: AMAZONS3
```

**注意**  
`PUT` 要求標頭的大小限制為 8 KB。在 `PUT` 要求標頭中，使用者定義中繼資料的大小限制為 2 KB。測量使用者定義中繼資料大小的方式，是透過計算每個金鑰和值之 UTF-8 編碼中的位元組數目加總。

如需透過建立物件複本、修改它以及取代舊物件或建立新版本來變更上傳之後物件的中繼資料的相關資訊，請參閱 [在 Amazon S3 主控台中編輯物件中繼資料](add-object-metadata.md)。