如何使用有条件读取根据元数据检索或复制对象 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

如何使用有条件读取根据元数据检索或复制对象

通过有条件读取,可以向读取请求中添加一个额外的标头,以便向 S3 操作添加前提条件。如果未满足这些前提条件,读取请求将失败。

可以对 GETHEADCOPY 请求使用有条件读取,以便仅根据对象的元数据返回该对象。

当您上传对象时,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