条件付き読み取りでメタデータに基づいてオブジェクトを取得またはコピーする方法
条件付き読み取りでは、S3 オペレーションに前提条件を追加するために、読み取りリクエストにヘッダーを追加できます。これらの前提条件が満たされない場合、読み取りリクエストは失敗します。
GET
、HEAD
、または COPY
リクエストの条件付き読み取りを使用して、メタデータに基づいてのみオブジェクトを返すことができます。
オブジェクトをアップロードすると、Amazon S3 は S3 によってのみ変更できるシステム制御メタデータを作成します。エンティティタグ (ETag) と最終更新日は、システム制御メタデータの例です。オブジェクトの ETag は、オブジェクトの特定のバージョンを表す文字列です。最終更新日は、オブジェクトの作成日または最終更新日のどちらか新しい方を表すメタデータです。
条件付き読み取りを使用すると、オブジェクトの ETag または最終更新日に基づいてオブジェクトを返すことができます。リクエストで ETag 値を指定し、ETag 値が一致する場合にのみオブジェクトを返すことができます。これにより、オブジェクトの特定のバージョンのみを返すかコピーできます。指定した日付以降にオブジェクトが変更されている場合にのみ、読み取りリクエストで最終更新日の値を指定してオブジェクトを返すことができます。
サポートされている API
条件付き読み取りの使用をサポートする S3 API は、次のとおりです。
以下のヘッダーを使用して、エンティティタグ (ETag) または最終変更日に基づくオブジェクトを返すことができます。ETag や最終変更日などのオブジェクトメタデータの詳細については、「システムで定義されたオブジェクトメタデータ」を参照してください。
GetObject
-
If-Match
— オブジェクトの ETag が指定した値と一致する場合にのみオブジェクトを返します。 -
If-Modified-Since
— 指定された時刻以降に変更されたオブジェクトのみを返します。 -
If-None-Match
— オブジェクトの ETag が指定した値と一致しない場合にのみオブジェクトを返します。 -
If-Unmodified-Since
— 指定された時刻以降に変更されていないオブジェクトのみを返します。
このようなヘッダー、返されるエラー、S3 が単一のリクエストで複数の条件付きヘッダーを処理する順序の詳細については、「Amazon Simple Storage Service API リファレンス」の「GetObject」を参照してください。
HeadObject
-
If-Match
— オブジェクトの ETag が指定した値と一致する場合にのみオブジェクトを返します。 -
If-Modified-Since
— 指定された時刻以降に変更されたオブジェクトのみを返します。 -
If-None-Match
— オブジェクトの ETag が指定した値と一致しない場合にのみオブジェクトを返します。 -
If-Unmodified-Since
— 指定された時刻以降に変更されていないオブジェクトのみを返します。
このようなヘッダー、返されるエラー、S3 が単一のリクエストで複数の条件付きヘッダーを処理する順序の詳細については、「Amazon Simple Storage Service API リファレンス」の「HeadObject」を参照してください。
CopyObject
-
x-amz-copy-source-if-match
— オブジェクトの ETag が指定した値と一致する場合にのみ、ソースオブジェクトをコピーします。 -
x-amz-copy-source-if-modified-since
— 指定された時刻以降に変更されたソースオブジェクトのみをコピーします。 -
x-amz-copy-source-if-none-match
— オブジェクトの ETag が指定した値と一致しない場合にのみソースオブジェクトをコピーします。 -
x-amz-copy-source-if-unmodified-since
— 指定された時刻以降に変更されていないソースオブジェクトのみをコピーします。
このようなヘッダー、返されるエラー、S3 が単一のリクエストで複数の条件付きヘッダーを処理する順序の詳細については、「Amazon Simple Storage Service API リファレンス」の「CopyObject」を参照してください。