使用 S3 清单对数据进行编目和分析 - Amazon Simple Storage Service

使用 S3 清单对数据进行编目和分析

您可以使用 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 交付第一份清单报告可能需要长达 48 小时。

源存储桶和目标存储桶

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

源存储桶

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

源存储桶:

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

  • 包含清单的配置

目标存储桶

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

目标存储桶:

  • 包含清单文件列表。

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

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

  • 必须与源存储桶位于同一 AWS 区域。

  • 可以与源存储桶相同。

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

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 摘要。是与不是取决于对象的创建方式和加密方式。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 Object

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

    注意

    S3 清单不支持 S3 Express One Zone。

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

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

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

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

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

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

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

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

  • 校验和算法 – 表示用于创建对象的校验和的算法。有关更多信息,请参阅 使用支持的校验和算法

  • 对象访问控制列表 – 每个对象的访问控制列表(ACL),用于定义哪个 AWS 账户或组被授予对此对象的访问权限以及授予的访问权限类型。“对象 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 清单

  • 对象拥有者:对象拥有者的规范用户 ID。有关更多信息,请参阅《AWS 账户管理参考指南》中的 Find the canonical user ID for your AWS account

注意

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

以下是清单报告示例,其中包含由四条记录组成的其它元数据字段。

amzn-s3-demo-bucket1 example-object-1 EXAMPLEDC8l.XJCENlF7LePaNIIvs001 TRUE 1500 2024-08-15T15:28:26.0004 EXAMPLE21e1518b92f3d92773570f600 STANDARD FALSE COMPLETED SSE-KMS 2025-01-25T15:28:26.000Z COMPLIANCE Off ENABLED eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7000 amzn-s3-demo-bucket1 example-object-2 EXAMPLEDC8l.XJCENlF7LePaNIIvs002 TRUE 200 2024-08-21T15:28:26.000Z EXAMPLE21e1518b92f3d92773570f601 INTELLIGENT_TIERING FALSE COMPLETED SSE-KMS 2025-01-25T15:28:26.000Z COMPLIANCE Off INFREQUENT ENABLED SHA-256 eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7001 amzn-s3-demo-bucket1 example-object-3 EXAMPLEDC8l.XJCENlF7LePaNIIvs003 TRUE 12500 2023-01-15T15:28:30.000Z EXAMPLE21e1518b92f3d92773570f602 STANDARD FALSE REPLICA SSE-KMS 2025-01-25T15:28:26.000Z GOVERNANCE On ENABLED eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7002 amzn-s3-demo-bucket1 example-object-4 EXAMPLEDC8l.XJCENlF7LePaNIIvs004 TRUE 100 2021-02-15T15:28:27.000Z EXAMPLE21e1518b92f3d92773570f603 STANDARD FALSE COMPLETED SSE-KMS 2025-01-25T15:28:26.000Z COMPLIANCE Off ENABLED eyJ2ZXJzaW9uIjoiMjAyMi0xMS0xMCIsInN0YXR1cyI6IkFWQUlMQUJMRSIsImdyYW50cyI6W3sicGVybWlzc2lvbiI6IkZVTExfQ09OVFJPTCIsInR5cGUiOiJDYW5vbmljYWxVc2VyIiwiY2Fub25pY2FsSWQiOiJFWEFNUExFNzY2ZThmNmIxMTVkOTNkNDFkZjJlYWM0MjBhYTRhNDY1ZDE3N2MxMzk4YmM2YTA4OGM3NmI3MDAwIn1dfQ== EXAMPLE766e8f6b115d93d41df2eac420aa4a465d177c1398bc6a088c76b7003

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

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

清单一致性

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

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

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