S3 元数据实时清单表架构 - Amazon Simple Storage Service

S3 元数据实时清单表架构

实时清单表提供存储桶中所有对象及其版本的简单、可查询的清单,以便您可以确定数据的最新状态。对于对象的更新通常会在一小时内反映在清单表中。

可以使用此表,通过确定要为各种工作负载处理的对象,从而简化和加快业务工作流程和大数据作业。例如,可以查询清单表来执行以下操作:

  • 查找存储在 S3 Glacier Deep Archive 存储类别中的所有对象。

  • 创建对象标签的分配或查找不带标签的对象。

  • 查找所有未使用具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)进行加密的对象。

为元数据表配置启用清单表时,该表将经历一个称为回填的过程,在此过程中,Amazon S3 扫描通用存储桶,以检索存储桶中所有对象的初始元数据。根据存储桶中的对象数量,此过程可能需要若干分钟(至少 15 分钟)到几小时。完成回填过程后,清单表的状态将从正在回填更改为活跃。完成回填后,对于对象的更新通常会在一小时内反映在清单表中。

注意

您需要为回填清单表付费。如果通用存储桶包含超过十亿个对象,您还需要为清单表支付每月费用。有关更多信息,请参阅 Amazon S3 定价

Amazon S3 元数据清单表包含行和列。每行代表通用存储桶中一个对象的当前状态。清单表提供存储桶中所有对象的简单、可查询的清单,以便您可以确定数据的当前状态。

下面是名为 amzn-s3-demo-bucket: 的通用存储桶的清单表示例:

bucket key sequence_number version_id is_delete_marker size last_modified_date e_tag storage_class is_multipart encryption_status is_bucket_key_enabled kms_key_arn checksum_algorithm object_tags user_metadata amzn-s3-demo-bucket Finance/statement1.pdf 80e737d8b4d82f776affffffffffffffff006737d8b4d82f776a00000000000000000000000000000000000000000000000072 FALSE 6223 11/15/2024 23:26 e131b86632dda753aac4018f72192b83 STANDARD FALSE SSE-KMS FALSE arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890df SSECRC32 {} {count -> Asia, customs -> false, family -> true, location -> Mary, name -> football, user -> United States} amzn-s3-demo-bucket s3-dg.pdf 80e737d8b4e39f1dbdffffffffffffffff006737d8b4e39f1dbd00000000000000000000000000000000000000000000000072 FALSE 3554 11/15/2024 23:26 9bb49efc2d92c05558ddffbbde8636d5 STANDARD FALSE DSSE-KMS FALSE arn:aws:kms:us-east-1:936810216292:key/0dcebce6-49fd-4cae-b2e2-5512ad281afd SSESHA1 {} {} amzn-s3-demo-bucket Development/Projects.xls 80e737d8b4ed9ac5c6ffffffffffffffff006737d8b4ed9ac5c600000000000000000000000000000000000000000000000072 FALSE 7746 11/15/2024 23:26 729a6863e47fb9955b31bfabce984908 STANDARD FALSE SSE-S3 FALSE NULL SSECRC32 {} {count -> Asia, customs -> Canada, family -> Billiards, filter -> true, location -> Europe, name -> Asia, user -> United States}

清单表具有以下架构:

列名称 必填? 数据类型

bucket

字符串 通用存储桶名称。有关更多信息,请参阅 通用存储桶命名规则

key

字符串 在存储桶中唯一地标识对象的对象键名称(或键)。有关更多信息,请参阅 为 Amazon S3 对象命名

sequence_number

字符串

序列号,它是一个序数,包含在给定对象的记录中。要对相同存储桶和键的记录进行排序,您可以按 sequence_number 进行排序。对于给定的存储桶和键,按字典顺序排列的较大 sequence_number 值意味着该记录是更近被引入存储桶的。

version_id

字符串

对象的版本 ID。在存储桶上启用版本控制后,Amazon S3 会为添加到存储桶的对象指定版本号。有关更多信息,请参阅 使用 S3 版本控制保留对象的多个版本

在您设置版本控制状态之前存储在存储桶中的对象的版本 ID 为 null。

is_delete_marker

布尔值

对象的删除标记状态。如果对象是删除标记,则此值为 True。否则为 False。有关更多信息,请参阅 使用删除标记

注意

为删除标记添加的行的 record_type 值为 DELETE,而不是 UPDATE_METADATA。如果删除标记是因为 S3 生命周期到期而创建的,则 requester 值为 s3.amazonaws.com

size

长整型

以字节为单位的对象大小,不包括未完成的分段上传或对象元数据的大小。如果 is_delete_markerTrue,则大小为 0。有关更多信息,请参阅 系统定义的对象元数据

last_modified_date

时间戳 NTZ(无时区)

对象创建日期或上次修改日期(以较晚者为准)。对于分段上传,对象创建日期是开始分段上传的日期。有关更多信息,请参阅 系统定义的对象元数据

e_tag

字符串

实体标签(ETag),这是对象的哈希。ETag 仅反映对于对象的内容的更改,而不反映对于对象的元数据的更改。ETag 可能是对象数据的 MD5 摘要。ETag 是否为 MD5 摘要取决于对象的创建方式及其加密方式。有关更多信息,请参阅《Amazon S3 API 参考》中的 Object

storage_class

字符串

用于存储对象的存储类。以下值之一:STANDARDREDUCED_REDUNDANCYSTANDARD_IAONEZONE_IAINTELLIGENT_TIERINGGLACIERDEEP_ARCHIVEGLACIER_IR。有关更多信息,请参阅 了解和管理 Amazon S3 存储类

is_multipart

布尔值

对象的上传类型。如果对象以分段上传形式上传,则此值为 True。否则为 False。有关更多信息,请参阅 在 Amazon S3 中使用分段上传来上传和复制对象

encryption_status

字符串

对象的服务器端加密状态,具体取决于使用哪种加密密钥:具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)、具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)、具有 AWS KMS keys的双层服务器端加密(DSSE-C)或具有客户提供的密钥的服务器端加密(SSE-C)。如果对象未加密,则此值为 null。可能的值为 SSE-S3SSE-KMSDSSE-KMSSSE-C 或 null。有关更多信息,请参阅 利用加密来保护数据

is_bucket_key_enabled

布尔值

对象的 S3 存储桶密钥启用状态。如果对象将 S3 存储桶密钥用于 SSE-KMS,则此值为 True。否则为 False。有关更多信息,请参阅 在对象级别配置 S3 存储桶密钥

kms_key_arn

字符串

用于加密对象的 KMS 密钥的 Amazon 资源名称(ARN),适用于 encryption_statusSSE-KMSDSSE-KMS 的行。如果对象未使用 SSE-KMS 或 DSSE-KMS 进行加密,则值为 null。有关更多信息,请参阅使用具有 AWS KMS 密钥的服务器端加密(SSE-KMS)使用具有 AWS KMS 密钥的双层服务器端加密(DSSE-KMS)

注意

如果某行代表的对象版本在处理删除或覆盖事件时不再存在,则即使 encryption_status 列的值为 SSE-KMSDSSE-KMSkms_key_arn 也将包含 null 值。

checksum_algorithm

字符串

用于为对象创建校验和的算法,为以下值之一:CRC64-NVMECRC32CRC32CSHA1SHA256。如果不存在校验和,则此值为 null。有关更多信息,请参阅 使用支持的校验和算法

object_tags

Map <String, String>

与对象关联的对象标签。对象标签存储为键值对的映射。如果对象没有对象标签,则会存储空映射 ({})。有关更多信息,请参阅 使用标签对对象进行分类

注意

如果 record_type 值为 DELETE,则 object_tags 列包含 null 值。如果 record_type 值为 CREATEUPDATE_METADATA,则表示在处理删除或覆盖事件时已不再存在的对象版本的行在 object_tags 列中将包含 null 值。

user_metadata

Map <String, String>

与对象关联的用户元数据。用户元数据存储为键值对的映射。如果对象没有用户元数据,则会存储空映射 ({})。有关更多信息,请参阅 用户定义的对象元数据

注意

如果 record_type 值为 DELETE,则 user_metadata 列包含 null 值。如果 record_type 值为 CREATEUPDATE_METADATA,则表示在处理删除或覆盖事件时已不再存在的对象版本的行在 user_metadata 列中将包含 null 值。