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

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

通过有条件读取,可以向读取请求中添加一个额外的标头,以便向 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