

# オブジェクトメタデータの使用
<a name="UsingMetadata"></a>

Amazon S3 には、*システム定義*メタデータと*ユーザー定義*メタデータの 2 種類のオブジェクトメタデータがあります。システム定義メタデータには、オブジェクトの作成日、サイズ、ストレージクラスなどのメタデータが含まれます。ユーザー定義メタデータは、オブジェクトのアップロード時に設定できるメタデータです。このユーザー定義メタデータは、名前と値のペアのセットです。詳細については、「[システムで定義されたオブジェクトメタデータ](#SysMetadata)」および「[ユーザー定義のオブジェクトメタデータ](#UserMetadata)」を参照してください。

オブジェクトを作成するときは、Amazon S3 バケット内のオブジェクトを一意に識別する*オブジェクトキー* (または*キー名*) を指定します。詳細については、「[Amazon S3 オブジェクトに命名する](object-keys.md)」を参照してください。オブジェクトをアップロードする時に Amazon S3 で[ユーザー定義メタデータ](#UserMetadata)を設定することもできます。

オブジェクトをアップロードした後で、このユーザー定義メタデータを変更することはできません。このメタデータを変更する唯一の方法は、オブジェクトのコピーを作成し、メタデータを設定することです。Amazon S3 コンソールを使用したメタデータの編集の詳細については、「[Amazon S3 コンソールでのオブジェクトメタデータの編集](add-object-metadata.md)」を参照してください。

**S3 メタデータを使用してメタデータをクエリし、データ検出を高速化する**  
S3 オブジェクトのメタデータを簡単に検索、保存、クエリするには、S3 メタデータを使用できます。S3 メタデータを使用すると、ビジネス分析、コンテンツ取得、人工知能と機械学習 (AI/ML) モデルトレーニングなどで使用するデータをすばやく準備できます。

S3 メタデータは、汎用バケット内のオブジェクトのメタデータを自動的にキャプチャし、クエリできる読み取り専用のフルマネージド Apache Iceberg テーブルに保存することで、データ検出を高速化します。これらの読み取り専用テーブルは*メタデータテーブル*と呼ばれます。オブジェクトが汎用バケットに追加、更新、削除されると、S3 メタデータは対応するメタデータテーブルを自動的に更新して、最新の変更を反映します。

デフォルトでは、S3 メタデータは、オブジェクトの作成時刻やストレージクラスなどの[システム定義のオブジェクトメタデータ](#SysMetadata)、およびオブジェクトのアップロード中に含められたタグや[ユーザー定義のメタデータ](#UserMetadata)などのカスタムメタデータを提供します。S3 メタデータは、オブジェクトが更新または削除されたときや、リクエストを行った AWS アカウントなどのイベントメタデータも提供します。

メタデータテーブルは、表形式データ用に最適化されたストレージを提供する S3 テーブルバケットに保存されます。メタデータをクエリするために、テーブルバケットを Amazon Athena、Amazon Redshift、Amazon Quick などの AWS 分析サービスと統合できます。

S3 メタデータの詳細については、「[S3 メタデータテーブルを使用したデータの検出](metadata-tables-overview.md)」を参照してください。

## システムで定義されたオブジェクトメタデータ
<a name="SysMetadata"></a>

Amazon S3 では、バケットに格納されるオブジェクトごとに、一連のシステムメタデータが維持されます。Amazon S3 はこのシステムメタデータを必要に応じて処理します。例えば、Amazon S3 ではオブジェクトの作成日とサイズに関するメタデータが維持され、オブジェクト管理の目的でこの情報が使用されます。

システムメタデータには 2 つのカテゴリがあります。
+ **システム制御** – オブジェクトの作成日などのメタデータはシステムによって制御されます。つまり、Amazon S3 だけがその日付値を変更できることを意味します。
+ **ユーザー制御** – 他のシステムメタデータ (オブジェクトに設定済みのストレージクラスや、オブジェクトでサーバー側の暗号化が有効になっているかどうかなど) は、ユーザーが値を制御するシステムメタデータの例です。バケットをウェブサイトとして設定している場合、ページリクエストを別のページか外部 URL のいずれかにリダイレクトする場合があります。この場合、ウェブページはバケット内のオブジェクトです。Amazon S3 は、ページリダイレクト値をシステムメタデータとして保存し、ユーザーがその値を制御できます。

  オブジェクトを作成するときに、このようなシステムメタデータ項目の値を設定したり、必要に応じてその値を更新したりできます。ストレージクラスの詳細については、「[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)」を参照してください。

  Amazon S3 は Amazon S3 オブジェクトを暗号化する AWS KMS キーを使用します。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) は、そのオブジェクトの特定のバージョンを表します。マルチパートアップロードとしてアップロードされず、暗号化されていない、または Simple Storage Service (Amazon S3) 管理キー (SSE-S3) を使用したサーバー側の暗号化によって暗号化されているオブジェクトの場合、ETag はデータの MD5 ダイジェストです。 | いいえ | 
| x-amz-server-side-encryption | オブジェクトでサーバー側の暗号化が有効であるか、そして暗号化が AWS Key Management Service (AWS 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 に使用するように指示したチェックサムアルゴリズムに応じて、これらのヘッダーの最大 1 つが一度に設定されます。チェックサムアルゴリズムの選択の詳細については、「[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 | オブジェクトの暗号化に使用された AWS KMS 対称暗号化 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 にかかわらず、プレフィックスは削除されます。

**注記**  
 SOAP API for Amazon S3 は新規顧客には利用できず、2025 年 8 月 31 日にサポート終了 (EOL) となります。REST API か AWS SDK を使用することをお勧めします。

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) を参照してください。