Amazon S3 清单 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon S3 清单

重要

Amazon S3 现在将具有 Amazon S3 托管密钥的服务器端加密 (SSE-S3) 作为 Amazon S3 中每个存储桶的基本加密级别。从 2023 年 1 月 5 日起,上传到 Amazon S3 的所有新对象都将自动加密,不会产生额外费用,也不会影响性能。S3 存储桶默认加密配置和上传的新对象的自动加密状态可在 Amazon CloudTrail 日志、S3 清单、S3 Storage Lens 存储统计管理工具、Amazon S3 控制台中获得,并可用作 Amazon Command Line Interface 和 Amazon SDK 中的附加 Amazon S3 API 响应标头。有关更多信息,请参阅默认加密常见问题解答

您可以使用 Amazon S3 清单来帮助管理您的存储。例如,您可以出于业务、合规性和法规需要,使用该清单来审核和报告对象的复制和加密状态。您还可以使用 Amazon S3 清单简化和加快业务工作流和大数据任务,此清单可以有计划地取代 Amazon S3 同步 List API 操作。Amazon S3 清单不使用 List API 操作来审计对象且不会影响存储桶的请求速率。

Amazon S3 清单每天或每周为 S3 存储桶或具有共享前缀的对象(即,其名称以通用字符串开头的对象),提供用于列出您的对象及其对应元数据的逗号分隔值 (CSV)、Apache 优化的行列式 (ORC)Apache Parquet 输出文件。如果您设置每周清单,则在初始报告后的每个星期日(UTC 时区)生成一份报告。有关 Amazon S3 清单定价的信息,请参阅 Amazon S3 定价

您可以为存储桶配置多个清单列表。配置清单列表时,可以指定以下内容:

  • 清单中应包含哪些对象元数据

  • 是列出所有对象版本,还是仅列出当前版本

  • 在哪里存储清单列表文件输出

  • 是每天生成清单,还是每周生成清单

  • 是否加密清单列表文件

您可以通过 Amazon AthenaAmazon Redshift Spectrum 以及其他工具(如 PrestoApache HiveApache Spark)使用标准 SQL 查询 Amazon S3 清单。有关使用 Athena 查询清单文件的更多信息,请参阅使用 Amazon Athena 查询 Amazon S3 清单

源存储桶和目标存储桶

由清单列出其对象的存储桶称为源存储桶。在其中存储清单列表文件的存储桶称为目标存储桶

源存储桶

清单列出了源存储桶中存储的对象。您可以获得整个存储桶的清单列表,也可以通过对象键名称前缀筛选此列表。

源存储桶:

  • 包含在清单中列出的对象

  • 包含清单的配置

目标存储桶

Amazon S3 清单列表文件将写入目标存储桶。要对目标存储桶内公共位置中的所有清单列表文件进行分组,您可以在清单配置中指定目标前缀。

目标存储桶:

  • 包含清单文件列表。

  • 包含清单文件,其中列出了存储在目标存储桶中的所有清单列表文件。有关更多信息,请参阅 清单 Manifest

  • 必须具有向 Amazon S3 授予验证存储桶的所有权的权限和将文件写入存储桶的权限的存储桶策略。

  • 必须与源存储桶位于同一 Amazon Web Services 区域。

  • 可以与源存储桶相同。

  • 可以由与拥有源存储桶的账户不同的 Amazon Web Services 账户 拥有。

Amazon S3 清单列表

清单列表文件包含源存储桶中对象的列表以及每个对象的元数据。清单列表文件按以下格式之一存储在目标存储桶中:

  • 作为使用 GZIP 压缩的 CSV 文件

  • 作为使用 ZLIB 压缩的 Apache 优化行列式(ORC)文件

  • 作为使用 Snappy 压缩的 Apache Parquet 文件

注意

不能保证会以任何顺序对 Amazon S3 清单报告中的对象排序。

清单列表文件包含源存储桶中对象的列表以及每个所列对象的元数据:

  • Bucket name (存储桶名称) – 清单所针对的存储桶的名称。

  • 键名称 – 唯一地标识存储桶中的对象的对象键名(或键)。当您使用 CSV 文件格式时,键名称采用 URL 编码形式,必须解码,然后才能使用。

  • 版本 ID – 对象版本 ID。在存储桶上启用版本控制后,Amazon S3 会为添加到存储桶的对象指定版本号。有关更多信息,请参阅 在 S3 存储桶中使用版本控制。(如果仅为对象的当前版本配置列表,则不包括此字段。)

  • IsLatest – 如果对象的版本为最新,则设置为 True。(如果仅为对象的当前版本配置列表,则不包括此字段。)

  • 删除标记 – 如果对象是删除标记,则设置为 True。有关更多信息,请参阅 在 S3 存储桶中使用版本控制。(如果您已将您的报告配置为包含您的对象的所有版本,则此字段将自动添加到报告)。

  • 大小 - 以字节为单位的对象大小,不包括未完成的分段上传、对象元数据和删除标记的大小。

  • Last modified date (上次修改日期) – 对象创建日期或上次修改日期(以较晚者为准)。

  • ETag – 实体标签(ETag)是对象的哈希。ETag 仅反映对于对象的内容的更改,而不反映对于对象的元数据的更改。ETag 可能是对象数据的 MD5 摘要。是与不是取决于对象的创建方式和加密方式。

  • 存储类 – 用于存储对象的存储类。设置为 STANDARDREDUCED_REDUNDANCYSTANDARD_IAONEZONE_IAINTELLIGENT_TIERINGGLACIERDEEP_ARCHIVEOUTPOSTSGLACIER_IRSNOW。有关更多信息,请参阅 使用 Amazon S3 存储类

  • Multipart upload flag (分段上传标记) – 如果对象以分段上传形式上传,则设置为 True。有关更多信息,请参阅 使用分段上传来上传和复制对象

  • 复制状态 – 设置为 PENDINGCOMPLETEDFAILEDREPLICA。有关更多信息,请参阅 获取复制状态信息

  • 加密状态 – 服务器端加密状态,具体取决于使用的加密密钥类型:Amazon S3 托管式 (SSE-S3) 密钥、Amazon Key Management Service (Amazon KMS) 密钥 (SSE-KMS) 或客户提供的密钥 (SSE-C)。设置为 SSE-S3SSE-CSSE-KMSNOT-SSENOT-SSE 状态表示对象未使用服务器端加密进行加密。有关更多信息,请参阅 利用加密来保护数据

  • S3 对象锁定保留截止日期 – 在此日期之前无法删除锁定的对象。有关更多信息,请参阅 使用 S3 对象锁定

  • S3 对象锁定保留模式 – 对于已锁定的对象,设置为 GovernanceCompliance。有关更多信息,请参阅 使用 S3 对象锁定

  • S3 对象锁定依法保留状态 – 如果依法保留已应用于对象,则设置为 On。否则,其设置为 Off。有关更多信息,请参阅 使用 S3 对象锁定

  • S3 Intelligent-Tiering 访问层 – 如果对象存储在 S3 Intelligent-Tiering 存储类中,则为对象的访问层(频繁或不频繁)。设置为 FREQUENTINFREQUENTARCHIVE_INSTANT_ACCESSARCHIVEDEEP_ARCHIVE。有关更多信息,请参阅 用于自动优化访问模式不断变化或未知的数据的存储类

  • S3 存储桶密钥状态 – 设置为 ENABLED 或者 DISABLED。指示对象是否将 S3 存储桶密钥用于 SSE-KMS。有关更多信息,请参阅 使用 Amazon S3 存储桶密钥

  • 校验和算法 – 表示用于创建对象的校验和的算法。

  • 对象访问控制列表 – 每个对象的访问控制列表 (ACL),用于定义哪个 Amazon Web Services 账户或组被授予对此对象的访问权限以及授予的访问权限类型。“对象 ACL”字段以 JSON 格式定义。S3 清单报告包括与源存储桶中的对象关联的 ACL,即使已为该存储桶禁用了 ACL 仍会包括。有关更多信息,请参阅使用“对象 ACL”字段访问控制列表 (ACL) 概述

    注意

    “对象 ACL”字段以 JSON 格式定义。清单报告将“对象 ACL”字段的值显示为以 base64 编码的字符串。

    例如,假设您有以下采用 JSON 格式的“对象 ACL”字段:

    { "version": "2022-11-10", "status": "AVAILABLE", "grants": [{ "canonicalId": "example-canonical-user-ID", "type": "CanonicalUser", "permission": "READ" }] }

    “对象 ACL”字段经过编码并显示为以下以 base64 编码的字符串:

    eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3siY2Fub25pY2FsSWQiOiJleGFtcGxlLWNhbm9uaWNhbC11c2VyLUlEIiwidHlwZSI6IkNhbm9uaWNhbFVzZXIiLCJwZXJtaXNzaW9uIjoiUkVBRCJ9XX0=

    要以 JSON 格式获取“对象 ACL”字段的解码值,可以在 Amazon Athena 中查询此字段。有关示例查询,请参阅使用 Amazon Athena 查询 Amazon S3 清单

  • 对象拥有者 – 对象的拥有者。

注意

在对象根据其生命周期配置的生存期结束后,Amazon S3 会将该对象加入移除队列并异步移除它。因此,过期日期和 Amazon S3 删除对象的日期之间可能会有一段延迟。清单报告包括已过期但尚未移除的对象。有关 S3 生命周期中的过期操作的更多信息,请参阅即将过期的对象

我们建议创建一个删除旧清单列表的生命周期策略。有关更多信息,请参阅 管理存储生命周期

s3:PutInventoryConfiguration 权限允许用户在配置清单列表时选择之前为每个对象列出的所有元数据字段,也可以指定存储清单的目标存储桶。对目标存储桶中的对象具有读取权限的用户可以访问清单列表中提供的所有对象元数据字段。要限制对于清单报告的访问权限,请参阅向 S3 清单和 S3 分析功能授予权限

清单一致性

并非所有对象都会显示每个清单列表中。清单列表提供了(新对象和覆盖)的 PUT 请求的最终一致性,并提供了 DELETE 请求的最终一致性。存储桶的每个清单列表都是存储桶项目的快照。这些列表最终是一致的(也就是说,列表可能不包括最近添加或删除的对象)。

要在对于对象执行操作之前验证对象的状态,我们建议您执行 HeadObject REST API 请求以检索对象的元数据,或在 Amazon S3 控制台中检查对象的属性。您还可以使用 Amazon CLI 或 Amazon SDK 检查对象元数据。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 HeadObject

有关使用 Amazon S3 清单的更多信息,请参阅以下主题。