

# 表的记录过期时间
<a name="s3-tables-record-expiration"></a>

默认情况下，S3 表中的记录不会过期。为了帮助尽可能降低表的存储成本，您可以为表启用和配置记录过期。使用此选项，当记录过期时，Amazon S3 会自动从表中删除记录。

如果为表启用记录过期，则可以指定记录过期之前在表中保留记录的天数。这可以是从 1 天到 2147483647 天之间的任意天数。例如，要将表记录保留一年，请指定 `365` 天。然后，记录会保留 365 天。365 天后，记录过期，Amazon S3 会自动将其删除。

对于存储来自特定 AWS 服务（目前包括 Amazon S3 Storage Lens 存储统计管理工具和 Amazon SageMaker 目录）的特定数据集的 AWS 托管的表，您可以启用和配置记录过期。记录过期选项目前不可用于 AWS 托管的其他表。唯一的例外是 Amazon S3 元数据日记表。日记表使用您在服务级别指定的不同记录过期设置。有关为此类表配置记录过期的信息，请参阅[使日记表记录过期](metadata-tables-expire-journal-table-records.md)。请注意，记录过期选项不可用于您创建的 S3 表。

为表启用记录过期后，您可以随时禁用该功能。Amazon S3 随即停止过期，不再从表中删除记录。

**Topics**
+ [工作原理](#s3-tables-record-expiration-how-it-works)
+ [配置记录过期](#s3-tables-record-expiration-configure)
+ [监控记录过期](#s3-tables-record-expiration-monitor)
+ [注意事项](#s3-tables-expiration-considerations)

## 记录过期的工作原理
<a name="s3-tables-record-expiration-how-it-works"></a>

当记录的寿命超过您在表的记录过期设置中指定的天数时，记录过期会自动从 S3 表中删除这些记录。为了确定记录何时过期，Amazon S3 使用记录中的特定时间戳。时间戳列的选择直接派生自表的表架构。您无需指定要使用的时间戳列。这些表由 AWS 管理，当您为表启用记录过期时，Amazon S3 会自动选择要使用的相应列。

对于存储特定 Amazon S3 Storage Lens 存储统计管理工具指标或特定 Amazon SageMaker 目录元数据的 AWS 托管的表，您可以启用和配置记录过期设置。记录过期选项可用于这些服务的以下 AWS 托管的表：
+ S3 Storage Lens 存储统计管理工具：`bucket_property_metrics`、`default_activity_metrics`、`default_storage_metrics`、`expanded_prefixes_activity_metrics` 和 `expanded_prefixes_storage_metrics`。为了确定这些表中的记录何时过期，Amazon S3 使用记录中的 `report_time` 字段。
+ Amazon SageMaker 目录：`ASSET`。为了确定此表中的记录何时过期，Amazon S3 使用记录中的 `snapshot_time` 字段。

为表启用记录过期后，Amazon S3 开始运行记录过期作业，这些作业对表执行以下操作：

1. 识别超过了指定过期设置的记录。

1. 创建新的快照，排除对已过期记录的引用。

删除操作还会基于表的维护配置设置中的快照过期时间和未引用的文件删除设置。有关这些设置的更多信息，请参阅[表维护](s3-tables-maintenance.md)。

**警告**  
在记录满足过期的条件之后，Amazon S3 会在 24 到 48 小时内使这些记录过期并删除。系统从最新的快照中移除表记录。通过表维护操作来移除记录的数据和存储。表记录在过期后无法恢复。

## 为表配置记录过期
<a name="s3-tables-record-expiration-configure"></a>

您可以使用 Amazon S3 控制台、Amazon S3 REST API、AWS Command Line Interface（AWS CLI）或 AWS SDK，启用、配置和以其他方式管理 S3 表的记录过期设置。

在尝试对表执行这些任务之前，确保您拥有以下 AWS Identity and Access Management（IAM）权限：
+ `s3tables:GetTableRecordExpirationConfiguration`：此操作让您可以访问表的当前记录过期设置。
+ `s3tables:PutTableRecordExpirationConfiguration`：此操作让您可以启用、配置和禁用表的记录过期设置。
+ `s3tables:GetTableRecordExpirationJobStatus`：此操作让您可以监控表的记录过期操作（作业）的状态以及访问操作的指标。

以下各节介绍如何使用 Amazon S3 控制台和 AWS CLI，为表启用、配置和禁用记录过期设置。要使用 Amazon S3 REST API 或 AWS SDK 执行这些任务，请使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html) 操作。有关更多信息，请参阅《Amazon Simple Storage Service API 参考》**中的[使用 Amazon S3 进行开发](https://docs.aws.amazon.com/AmazonS3/latest/API/developing-s3.html)。

### 使用 S3 控制台
<a name="configure-table-record-expiration-console"></a>

要使用控制台启用和配置 S3 表的记录过期设置，请按照以下步骤操作。

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

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

1. 在**表存储桶**页面上，选择存储表的存储桶。

1. 在**表**选项卡上，选择表。

1. 在**维护**选项卡上的**记录过期**部分，选择**编辑**。

1. 在**记录过期**下，选择**启用**。

1. 对于**记录距离过期的天数**，输入表中记录的保留天数。这可以是从 1 到 2147483647 之间的任意整数。例如，要将记录保留一年，请输入 **365**。
**警告**  
确定表中记录的相应保留期限时，请注意，记录在过期后无法恢复。

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

以后若要更改保留期，请重复上述步骤。

以后若要禁用记录过期，请重复步骤 1 到 5。然后，在第 6 步中选择**禁用**。完成后，选择**保存更改**。

### 使用 AWS CLI
<a name="configure-table-record-expiration-CLI"></a>

要使用 AWS CLI 配置和管理 S3 表的记录过期设置，请运行 [https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html) 命令。

您可以先创建 JSON 文件，其中包含要应用于表的记录过期设置。以下示例说明对表启用记录过期的 JSON 文件的内容。它还为表中的记录指定了 30 天的保留期。换而言之，它指定表记录应在 30 天后过期。

```
{
    "status": "enabled",
        "settings": {
            "days": 30
        {
}
```

要使用前述示例，请将 `user input placeholders` 替换为您自己的信息。

**警告**  
确定表中记录的相应保留期限时，请注意，记录在过期后无法恢复。

要为表禁用记录过期，请为 `status` 字段指定 `disabled` 并在文件中省略 `settings` 对象。例如：

```
{
    "status": "disabled"
}
```

创建包含要应用的设置的 JSON 文件后，运行 `put-table-record-expiration-configuration` 命令。对于 `table-arn` 参数，请指定表的 Amazon 资源名称（ARN）。对于 `value` 参数，请指定存储设置的文件的名称。

例如，以下命令更新表的记录过期设置。这些设置在名为 *`record-expiration-config.json`* 的文件中指定。

```
aws s3tables put-table-record-expiration-configuration \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table \
    --value file://./record-expiration-config.json
```

要使用前述示例，请将 `user input placeholders` 替换为您自己的信息。

## 监控表的记录过期
<a name="s3-tables-record-expiration-monitor"></a>

要监控 S3 表的记录过期操作的状态和结果，请使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html) 操作，如果您使用 AWS CLI，则运行 [https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html) 命令。在请求中，指定表的 Amazon 资源名称（ARN）。

例如，以下 AWS CLI 命令检索表存储桶中特定表的记录过期操作的状态。要使用此示例，请将 `user input placeholders` 替换为您自己的信息。

```
aws s3tables get-table-record-expiration-job-status \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table
```

如果您的请求成功，则会收到一条响应，其中提供了详细信息，例如 Amazon S3 最近一次对表运行记录过期操作的时间以及该操作的状态。如果最近一次运行成功，则响应还包括处理指标，例如，删除的数据文件和记录的数量，以及删除数据的总大小。如果最近一次运行出错，则响应中会包含一条失败消息，说明运行失败的原因。

## 注意事项
<a name="s3-tables-expiration-considerations"></a>

在为 AWS 托管的 S3 表配置和管理记录过期设置时，请记住以下几点：
+ 记录过期仅可用于由支持的 AWS 服务（Amazon S3 Storage Lens 存储统计管理工具和 Amazon SageMaker 目录）创建的某些 AWS 托管的表。此外，记录过期仅可用于单个表，而不是整个表存储桶。
+ 为了确定记录何时过期，Amazon S3 使用表中的特定时间戳。这些时间戳表示数据的创建时间，而不是 Amazon S3 摄取表中记录的时间。使用的时间戳列取决于发布表的服务：对于 S3 Storage Lens 存储统计管理工具指标为 `report_time` 字段；对于 Amazon SageMaker 目录元数据为 `snapshot_time` 字段。您无法指定要使用哪个字段，因为这些表是由 AWS 管理的。
+ 如果将数据导出到表时出现延迟，则记录可能比您预期的更早达到过期条件。因此，我们建议您考虑潜在的摄取延迟，在表的过期设置中为保留期添加缓冲时间。
+ 记录会在达到过期条件后的 24 到 48 小时内过期并删除。Amazon S3 不会在记录达到过期条件后立即使记录过期并删除记录。
+ 记录在过期并被删除后无法恢复。