ECS:对象生命周期策略未过期版本
Summary: 用户配置的对象生命周期策略,使用“Expiration”选项自动删除对象。但是,自启用版本控制以来的存储区不会删除非当前版本。
Symptoms
提醒:以下问题不适用于已暂停或已禁用版本控制的存储区。
1.在启用了版本控制的存储区中,生命周期策略如下例所示设置为使对象到期。策略配置为在 1 天后自动到期并删除对象。
<?xml version="1.0" ?> <LifecycleConfiguration xmlns="http://s3.companyaws.com/doc/2006-03-01/"> <Rule> <ID>Expire Objects</ID> <Prefix/> <Status>Enabled</Status> <Expiration> <Days>1</Days> </Expiration> </Rule> </LifecycleConfiguration>
2.对于从未创建版本的对象,上面的对象到期策略会导致插入删除标记以替换当前对象。因此,当前对象将成为非当前版本,而不是被删除
例:
在满足策略之前,有一个对象是最新的
[VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: 54270 [OBJECT]: sample.object
策略匹配后(1 天后),到期将发生,但对象将变为非当前版本,并且 dmarker 将作为最新对象插入。
[VERSION_ID]: 1558539371262 [IS_LATEST]: false [MTIME]: 2019-05-22T15:36:11.262Z [SIZE]: 54270 [OBJECT]: sample.object >>> original object becomes non current version [VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: DMARKER [OBJECT]: sample.object >>> DMarker inserted as latest version.
希望从此策略中看到对象的用户会被完全删除。
Cause
上一节中提到的策略示例的期望对于版本控制存储区是错误的。但是,对于非版本控制存储区来说,情况确实如此,因为在非版本控制存储区中,对象会立即过期并被删除,变得不可恢复。
相比之下,对于版本控制存储区,S3 协议会以不同的方式处理对象到期,而是将对象移至非当前版本。并添加删除标记作为占位符。使用版本控制存储区可以恢复对象版本,这允许根据策略设置进行宽限期恢复。这是预期的行为。
有关 S3 中的生命周期策略、版本控制和到期的更多详细信息,请参阅本文底部“其他信息”部分中的参考。
Resolution
在启用版本的存储区中,最好使用以下生命周期策略示例。这会使非当前版本过期,并且还会删除标记(直接删除版本控制存储区中的对象的结果)。
示例:
在此示例中,S3 通过为每个当前对象版本添加删除标记,在当前版本(对象)创建 60 天后删除它们。此过程使当前版本成为非当前版本,删除标记将成为当前版本。
其中 NoncurrentVersionExpiration 相同 S3 生命周期配置中的操作会在非当前对象变为非当前对象 30 天后删除它们。因此,在此示例中,所有对象版本将在对象创建 90 天后永久删除。
重要提示:应谨慎处理生命周期策略,指定与您的应用程序需求匹配的天数和操作数。以下策略只是一个示例,它使 dmarkers 和非当前版本到期,这使得删除操作不可恢复。
<LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
Additional Information
有关版本控制和非版本控制存储桶中的策略到期行为的更多详细信息,请参阅此处;https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.htmlhttps://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html#intro-lifecycle-rules-actions
https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex7
ECS 数据访问指南中也提供了更多解释,其中详细说明了如何设置生命周期策略
https://dl.dell.com/content/manual53094723-ecs-3-8-x-data-access-guide.pdf