ECS:物件生命週期原則未到期的版本
Summary: 使用者設定的物件生命週期原則,提供選項「到期」,以自動刪除物件。但是,由於已啟用版本控制,貯體不會刪除非最新版本。
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 天后永久刪除。
重要注意事項 :生命週期策略應謹慎處理,指定符合應用程式需求的天數和操作。以下原則僅為範例,它會使 dmarker 和非目前版本過期,導致刪除無法復原。
<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