如何使用有条件读取根据元数据检索或复制对象
通过有条件读取,可以向读取请求中添加一个额外的标头,以便向 S3 操作添加前提条件。如果未满足这些前提条件,读取请求将失败。
可以对 GET
、HEAD
或 COPY
请求使用有条件读取,以便仅根据对象的元数据返回该对象。
当您上传对象时,Amazon S3 将创建只能由 S3 修改的系统控制的元数据。实体标签(ETag)和 Last-Modified 是系统控制的元数据的示例。对象的 ETag 是一个字符串,表示对象的特定版本。Last-Modified 日期是元数据,表示对象的创建日期或上次修改日期(以较晚者为准)。
通过有条件读取,可以根据对象的 ETag 或 Last-Modified 日期返回该对象。可以在请求中指定 ETag 值,并且仅在 ETag 值匹配时才返回对象。这可以确保您只返回或复制对象的特定版本。可以在读取请求中指定 Last-Modified 值,并且仅当对象自您提供的日期以来已被修改时,才返回该对象。
支持的 API
以下 S3 API 支持使用有条件读取:
可以使用以下标头来返回依赖于实体标签(ETag)或上次修改日期的对象。有关对象元数据(例如 ETag 和 Last-Modified)的更多信息,请参阅系统定义的对象元数据。
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。