

# S3 元数据实时清单表架构
<a name="metadata-tables-inventory-schema"></a>

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

可以使用此表，通过确定要为各种工作负载处理的对象，从而简化和加快业务工作流程和大数据作业。例如，可以查询清单表来执行以下操作：
+ 查找存储在 S3 Glacier Deep Archive 存储类别中的所有对象。
+ 创建对象标签的分配或查找不带标签的对象。
+ 查找所有未使用具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）进行加密的对象。

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

**注意**  
您需要为回填清单表付费。如果通用存储桶包含超过十亿个对象，您还需要为清单表支付每月费用。有关更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

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`  | 是 | 字符串 | 通用存储桶名称。有关更多信息，请参阅 [通用存储桶命名规则](bucketnamingrules.md)。 | 
|  `key`  | 是 | 字符串 | 在存储桶中唯一地标识对象的对象键名称（或键）。有关更多信息，请参阅 [为 Amazon S3 对象命名](object-keys.md)。 | 
|  `sequence_number`  | 是 | 字符串 |  序列号，它是一个序数，包含在给定对象的记录中。要对相同存储桶和键的记录进行排序，您可以按 `sequence_number` 进行排序。对于给定的存储桶和键，按字典顺序排列的较大 `sequence_number` 值意味着该记录是更近被引入存储桶的。  | 
|  `version_id`  | 否 | 字符串 |  对象的版本 ID。在存储桶上启用版本控制后，Amazon S3 会为添加到存储桶的对象指定版本号。有关更多信息，请参阅 [使用 S3 版本控制保留对象的多个版本](Versioning.md)。 在您设置版本控制状态之前存储在存储桶中的对象的版本 ID 为 null。  | 
|  `is_delete_marker`  | 否 | 布尔值 |  对象的删除标记状态。如果对象是删除标记，则此值为 `True`。否则为 `False`。有关更多信息，请参阅 [使用删除标记](DeleteMarker.md)。  为删除标记添加的行的 `record_type` 值为 `DELETE`，而不是 `UPDATE_METADATA`。如果删除标记是因为 S3 生命周期到期而创建的，则 `requester` 值为 `s3.amazonaws.com`。   | 
|  `size`  | 否 | 长整型 |  以字节为单位的对象大小，不包括未完成的分段上传或对象元数据的大小。如果 `is_delete_marker` 为 `True`，则大小为 `0`。有关更多信息，请参阅 [系统定义的对象元数据](UsingMetadata.md#SysMetadata)。  | 
|  `last_modified_date`  | 否 | 时间戳 NTZ（无时区） |  对象创建日期或上次修改日期（以较晚者为准）。对于分段上传，对象创建日期是开始分段上传的日期。有关更多信息，请参阅 [系统定义的对象元数据](UsingMetadata.md#SysMetadata)。  | 
|  `e_tag`  | 否 | 字符串 |  实体标签（ETag），这是对象的哈希。ETag 仅反映对于对象的内容的更改，而不反映对于对象的元数据的更改。ETag 可能是对象数据的 MD5 摘要。ETag 是否为 MD5 摘要取决于对象的创建方式及其加密方式。有关更多信息，请参阅《Amazon S3 API 参考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html)。  | 
|  `storage_class`  | 否 | 字符串 |  用于存储对象的存储类。以下值之一：`STANDARD`、`REDUCED_REDUNDANCY`、`STANDARD_IA`、`ONEZONE_IA`、`INTELLIGENT_TIERING`、`GLACIER`、`DEEP_ARCHIVE` 或 `GLACIER_IR`。有关更多信息，请参阅 [了解和管理 Amazon S3 存储类](storage-class-intro.md)。  | 
|  `is_multipart`  | 否 | 布尔值 |  对象的上传类型。如果对象以分段上传形式上传，则此值为 `True`。否则为 `False`。有关更多信息，请参阅 [在 Amazon S3 中使用分段上传来上传和复制对象](mpuoverview.md)。  | 
|  `encryption_status`  | 否 | 字符串 |  对象的服务器端加密状态，具体取决于使用哪种加密密钥：具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）、具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）、具有 AWS KMS keys的双层服务器端加密（DSSE-C）或具有客户提供的密钥的服务器端加密（SSE-C）。如果对象未加密，则此值为 null。可能的值为 `SSE-S3`、`SSE-KMS`、`DSSE-KMS`、`SSE-C` 或 null。有关更多信息，请参阅 [利用加密来保护数据](UsingEncryption.md)。  | 
|  `is_bucket_key_enabled`  | 否 | 布尔值 |  对象的 S3 存储桶密钥启用状态。如果对象将 S3 存储桶密钥用于 SSE-KMS，则此值为 `True`。否则为 `False`。有关更多信息，请参阅 [在对象级别配置 S3 存储桶密钥](configuring-bucket-key-object.md)。  | 
|  `kms_key_arn`  | 否 | 字符串 |  用于加密对象的 KMS 密钥的 Amazon 资源名称（ARN），适用于 `encryption_status` 为 `SSE-KMS` 或 `DSSE-KMS` 的行。如果对象未使用 SSE-KMS 或 DSSE-KMS 进行加密，则值为 null。有关更多信息，请参阅[使用具有 AWS KMS 密钥的服务器端加密（SSE-KMS）](UsingKMSEncryption.md)和[使用具有 AWS KMS 密钥的双层服务器端加密（DSSE-KMS）](UsingDSSEncryption.md)。  如果某行代表的对象版本在处理删除或覆盖事件时不再存在，则即使 `encryption_status` 列的值为 `SSE-KMS` 或 `DSSE-KMS`，`kms_key_arn` 也将包含 null 值。   | 
|  `checksum_algorithm`  | 否 | 字符串 |  用于为对象创建校验和的算法，为以下值之一：`CRC64-NVME`、`CRC32`、`CRC32C`、`SHA1` 或 `SHA256`。如果不存在校验和，则此值为 null。有关更多信息，请参阅 [使用支持的校验和算法](checking-object-integrity-upload.md#using-additional-checksums)。  | 
|  `object_tags`  | 否 | Map <String, String> |  与对象关联的对象标签。对象标签存储为键值对的映射。如果对象没有对象标签，则会存储空映射 (`{}`)。有关更多信息，请参阅 [使用标签对对象进行分类](object-tagging.md)。  如果 `record_type` 值为 `DELETE`，则 `object_tags` 列包含 null 值。如果 `record_type` 值为 `CREATE` 或 `UPDATE_METADATA`，则表示在处理删除或覆盖事件时已不再存在的对象版本的行在 `object_tags` 列中将包含 null 值。   | 
|  `user_metadata`  | 否 | Map <String, String> |  与对象关联的用户元数据。用户元数据存储为键值对的映射。如果对象没有用户元数据，则会存储空映射 (`{}`)。有关更多信息，请参阅 [用户定义的对象元数据](UsingMetadata.md#UserMetadata)。  如果 `record_type` 值为 `DELETE`，则 `user_metadata` 列包含 null 值。如果 `record_type` 值为 `CREATE` 或 `UPDATE_METADATA`，则表示在处理删除或覆盖事件时已不再存在的对象版本的行在 `user_metadata` 列中将包含 null 值。   | 