

# 即将过期的对象
<a name="lifecycle-expire-general-considerations"></a>

可以向 S3 生命周期配置中添加转换操作，来指示 Amazon S3 在对象生命周期结束时删除对象。当对象根据其生命周期配置达到其生命周期结束时，Amazon S3 会根据存储桶所处的 [S3 版本控制](Versioning.md)状态执行 `Expiration` 操作。
+ **不受版本控制的存储桶** – Amazon S3 会将该对象加入移除队列并异步移除该对象，从而永久移除该对象。
+ **受版本控制的存储桶** – 如果当前对象版本不是删除标记，Amazon S3 将添加具有唯一的版本 ID 的删除标记。这会使当前对象版本变为非当前版本，并使删除标记变为当前版本。
+ **已暂停版本控制的存储桶** – Amazon S3 创建版本 ID 为 null 的删除标记。此删除标记会在版本层次结构中将任何对象版本替换为 null 版本 ID，从而实际上删除对象。

对于受版本控制的存储桶（也即，已启用版本控制或已暂停版本控制），有一些指导 Amazon S3 如何处理 `Expiration` 操作的注意事项。对于启用版本控制或暂停版本控制的存储桶，以下内容适用：
+ 对象过期仅适用于对象的当前版本（它对非当前对象版本没有影响）。
+ 如果有一个或多个对象版本，并且删除标记是当前版本，则 Amazon S3 不会执行任何操作。
+ 如果当前对象版本是唯一的对象版本并且它还是删除标记（也称为*过期对象删除标记*，在这种情况下，所有对象版本都已删除，您只剩下一个删除标记），则 Amazon S3 将删除过期对象删除标记。还可以使用 `Expiration` 操作来指示 Amazon S3 移除所有到期对象删除标记。有关示例，请查看 [在启用了版本控制的存储桶中移除到期对象删除标记](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7)。
+ 您可以使用 `NoncurrentVersionExpiration` 操作元素来指示 Amazon S3 何时永久删除对象的非当前版本。删除的对象无法恢复。您可以根据自对象变为非当前对象以来的一定天数来确定此到期日期。除了天数之外，还可以提供要保留的最大非当前版本数（介于 1 和 100 之间）。此值指定在 Amazon S3 可以对给定版本执行关联操作之前，必须存在多少较新的非当前版本。要指定最大非当前版本数量，您还必须提供 `Filter` 元素。如果您未指定 `Filter` 元素，Amazon S3 会在您提供最大数量的非当前版本时生成 `InvalidRequest` 错误。有关使用 `NoncurrentVersionExpiration` 操作元素的更多信息，请参阅[用于描述生命周期操作的元素](intro-lifecycle-rules.md#intro-lifecycle-rules-actions)。
+ Amazon S3 不会对应用了 S3 对象锁定配置的非当前版本的对象采取任何操作。
+ 对于具有 `Pending` 复制状态的对象，Amazon S3 不会对当前或非当前版本的对象采取任何操作。

有关更多信息，请参阅 [使用 S3 版本控制保留对象的多个版本](Versioning.md)。

**重要**  
当您在 S3 生命周期配置中有多个规则时，对象可能变得符合条件可在同一天执行多个 S3 生命周期操作。在这种情况下，Amazon S3 遵循以下一般规则：  
永久删除优先于转换。
转换优先于[删除标记](DeleteMarker.md)的创建。
当对象符合条件可进行 S3 Glacier Flexible Retrieval 和 S3 Standard-IA（或 S3 One Zone-IA）转换时，Amazon S3 将选择 S3 Glacier Flexible Retrieval 转换。
 有关示例，请参阅 [重叠的筛选条件和冲突的生命周期操作的示例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)。

**现有对象和新对象**  
当您向存储桶添加生命周期配置时，配置规则将应用到现有对象以及您在以后添加的对象。例如，如果您在今天添加带有过期操作的生命周期配置规则，而该规则使带有特定前缀的对象在创建 30 天后过期，Amazon S3 会将任何超过 30 天且具有指定前缀的现有对象加入移除队列。

**重要**  
您不能使用存储桶策略来防止通过 S3 生命周期规则进行删除或转换。例如，即使您的存储桶策略拒绝所有主体的所有操作，您的 S3 生命周期配置也仍能正常发挥作用。

## 如何查找对象何时过期
<a name="lifecycle-expire-when"></a>

要找出对象的当前版本计划到期的时间，请使用 [https://docs.amazonaws.cn/AmazonS3/latest/API/RESTObjectHEAD.html](https://docs.amazonaws.cn/AmazonS3/latest/API/RESTObjectHEAD.html) 或 [https://docs.amazonaws.cn/AmazonS3/latest/API/RESTObjectGET.html](https://docs.amazonaws.cn/AmazonS3/latest/API/RESTObjectGET.html) API 操作。这些 API 操作返回的响应标头提供了对象的当前版本不再可供缓存的日期和时间。

**注意**  
过期日期和 Amazon S3 删除对象的日期之间可能会有一段延迟。对象过期后，不会再向您收取相关的过期或存储时间费用。
在更新、禁用或删除生命周期规则之前，请使用 `LIST` API 操作（例如 [https://docs.amazonaws.cn/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_ListObjectsV2.html)、[https://docs.amazonaws.cn/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_ListObjectVersions.html) 和 [https://docs.amazonaws.cn/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_ListMultipartUploads.html)）或 [使用 S3 清单对数据进行编目和分析](storage-inventory.md)，根据您的使用案例验证 Amazon S3 是否已转换符合条件的对象并使其到期。

## 最小存储持续时间收费
<a name="lifecycle-expire-minimum-storage"></a>

如果您创建的 S3 生命周期过期规则将促使在 S3 Standard-IA 或 S3 One Zone-IA 存储中存储不到 30 天的对象过期，则您需要支付 30 天的费用。如果您创建的生命周期过期规则将促使存储在 S3 Glacier Flexible Retrieval 存储中不到 90 天的对象过期，则您需要支付 90 天的费用。如果您创建的生命周期过期规则将促使存储在 S3 Glacier Deep Archive 存储中不到 180 天的对象过期，则您需要支付 180 天的费用。

有关更多信息，请参阅 [Amazon S3 定价](https://www.amazonaws.cn/s3/pricing/)。