

# 启用或禁用实时清单表
<a name="metadata-tables-enable-disable-inventory-tables"></a>

默认情况下，元数据表配置包含一个*日记表*，该表记录存储桶中的对象发生的事件。每个元数据表配置都需要日记表。

或者，可以将*实时清单表*添加到元数据表配置中。实时清单表提供存储桶中所有对象及其版本的简单、可查询的清单，以便您可以确定数据的最新状态。

**注意**  
如果您在 2025 年 7 月 15 日之前创建了 S3 元数据配置，则无法对该配置启用清单表。我们建议您删除配置并重新创建配置，以便可以创建清单表并使日记表记录过期。有关更多信息，请参阅 [对在 2025 年 7 月 15 日之前创建的元数据配置启用清单表](metadata-tables-create-configuration.md#metadata-tables-migration)。

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

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

**注意**  
您需要为回填清单表付费。如果通用存储桶包含超过十亿个对象，您还需要为清单表支付每月费用。有关更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。
无法暂停对清单表的更新，然后继续更新。但是，可以禁用清单表配置。禁用清单表不会将其删除。将为记录保留清单表，直到决定将其删除。  
如果已禁用清单表，之后想重新启用它，则必须先从 AWS 托管式表存储桶中删除旧的清单表。当重新启用清单表配置时，Amazon S3 会创建一个新的清单表，并且您需要再次支付回填新清单表的费用。

可以使用 Amazon S3 控制台、AWS Command Line Interface（AWS CLI）、AWS SDK 或 Amazon S3 REST API 来启用或禁用清单表。

**先决条件**  
如果已禁用清单表，现在想重新启用它，则必须先从 AWS 托管式表存储桶中手动删除旧的清单表。否则，由于表存储桶中已存在清单表，因此重新启用清单表将失败。要删除清单表，请参阅[删除元数据表](metadata-tables-delete-table.md#delete-metadata-table-procedure)。

当重新启用清单表配置时，Amazon S3 会创建一个新的清单表，并且您需要再次支付回填新清单表的费用。

## 启用或禁用清单表
<a name="metadata-tables-enable-disable-inventory-tables-procedure"></a>

### 使用 S3 控制台
<a name="metadata-tables-enable-disable-inventory-tables-console"></a>

**启用或禁用清单表**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 选择通用存储桶，该存储桶具有要为其启用或禁用清单表的元数据表配置。

1. 在存储桶的详细信息页面上，选择**元数据**选项卡。

1. 在**元数据**选项卡上，选择**编辑**，然后选择**编辑清单表配置**。

1. 在**编辑清单表配置**页面上，在**清单表**下方选择**已启用**或**已禁用**。
**注意**  
在选择**已启用**之前，请确保您已查看并符合[先决条件](#inventory-table-config-prereqs)。
   + 如果选择了**已启用**，则可以选择是否通过使用 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）来对表进行加密。默认情况下，清单表将通过使用 Amazon S3 托管式密钥的服务器端加密（SSE-S3）进行加密。

     如果您选择使用 SSE-KMS，则必须提供与通用存储桶位于同一区域的客户自主管理型 KMS 密钥。
**重要**  
只能在创建表的过程中为元数据表设置加密类型。创建 AWS 托管式表后，无法更改其加密设置。
     + 要使用 SSE-S3（默认）加密清单表，请选择**不指定加密类型**。
     + 要使用 SSE-KMS 加密清单表，请选择**指定加密类型**。在**加密类型**下，选择**使用 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）**。在 **AWS KMS 密钥**下，从现有 KMS 密钥中进行选择，或者输入 KMS 密钥 ARN。如果您还没有 KMS 密钥，请选择**输入 KMS 密钥 ARN**，然后选择**创建 KMS 密钥**。
   + 如果选择了**已禁用**，则在**禁用清单表后，该表将不再更新，也无法继续更新**下，选中该复选框。

1. 选择**保存更改**。

### 使用 AWS CLI
<a name="metadata-tables-enable-disable-inventory-tables-cli"></a>

要运行以下命令，您必须安装并配置 AWS CLI。如果未安装 AWS CLI，请参阅《AWS Command Line Interface 用户指南》**中的[安装或更新最新版本的 AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html)。

或者，可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、预先经过身份验证的 Shell，您可以直接从 AWS 管理控制台中启动它。有关更多信息，请参阅《AWS CloudShell 用户指南》**中的 [What is CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) 和 [Getting started with AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html)。

**使用 AWS CLI 启用或禁用清单表**

要使用以下示例命令，请将 `user input placeholders` 替换为您自己的信息。
**注意**  
在启用清单配置之前，请确保您已查看并符合[先决条件](#inventory-table-config-prereqs)。

1. 创建包含清单表配置的 JSON 文件并将其保存（例如 `inventory-config.json`）。以下是一个用于启用新清单表的示例配置。

   如果要启用清单表，则可以选择指定加密配置。默认情况下，元数据表通过使用 Amazon S3 托管式密钥的服务器端加密（SSE-S3）进行加密，可以通过将 `SseAlgorithm` 设置为 `AES256` 来指定此加密方式。

   要通过使用 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）来加密清单表，请将 `SseAlgorithm` 设置为 `aws:kms`。还必须将 `KmsKeyArn` 设置为通用存储桶所在区域中客户自主管理型 KMS 密钥的 ARN。

   ```
   {
     "ConfigurationState": "ENABLED",
     "EncryptionConfiguration": {       
       "SseAlgorithm": "aws:kms",
       "KmsKeyArn": "arn:aws:kms:us-east-2:account-id:key/key-id"
     }  
   }
   ```

   如果要禁用现有清单表，请使用以下配置：

   ```
   {
     "ConfigurationState": "DISABLED"  }  
   }
   ```

1. 使用以下命令更新通用存储桶（例如 `amzn-s3-demo-bucket`）的清单表配置：

   ```
   aws s3api update-bucket-metadata-inventory-table-configuration \
   --bucket amzn-s3-demo-source-bucket \
   --inventory-table-configuration file://./inventory-config.json \
   --region us-east-2
   ```

### 使用 REST API
<a name="metadata-tables-enable-disable-inventory-tables-rest-api"></a>

可以发送 REST 请求来启用或禁用清单表。有关更多信息，请参阅 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html)。

### 使用 AWS SDK
<a name="metadata-tables-enable-disable-inventory-tables-sdk"></a>

在 Amazon S3 中可以使用 AWS SDK 来启用或禁用清单表。有关信息，请参阅 [list of supported SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html#API_UpdateBucketMetadataInventoryTableConfiguration_SeeAlso)。