ECS: Objektets livscykelpolicy upphör inte att gälla
Summary: Användarkonfigurerad livscykelpolicy och objektlivscykelpolicy med alternativet "Förfallodatum" för att automatiskt ta bort objekt. Men bucket eftersom versionshantering har aktiverats tas inte de aktuella versionerna bort. ...
Symptoms
Obs! Problemet nedan gäller inte inaktiverade bucketar eller versionshantering.
1. I en versionsaktiverad bucket anges en livscykelprincip som i exemplet nedan för att förfalla objekt. Principen konfigurerades för att automatiskt upphöra att gälla och ta bort objekt efter 1 dag.
<?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. För objekt som aldrig har skapat versioner resulterar principen för förfallodatum för objekt ovan i en borttagningsmarkör som infogas för att ersätta det aktuella objektet. Och därmed blir det aktuella objektet en icke-aktuell version i stället för att tas bort
Exempel:
Innan principen uppfylls finns det ett objekt och är det senaste
[VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: 54270 [OBJECT]: sample.object
När principen matchar (efter 1 dag) inträffar förfallodatumet, men objektet omvandlas till en inaktuell version och en dmarker infogas som det senaste objektet.
[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.
Användare som förväntar sig att objektet ska tas bort helt av den här principen.
Cause
Förväntningarna från principexemplet som nämns i föregående avsnitt är fel för versionshantering av bucketar. Det gäller dock för icke-versionshanterande bucketar, eftersom objektet i icke-versionshanterande bucketar upphör att gälla direkt och tas bort och blir oåterkalleligt.
Med versionshanteringsbucketar hanterar S3-protokollen däremot objektens förfallodatum på olika sätt, det flyttar i stället objektet till en icke-aktuell version. Och lägger till en borttagningsmarkör som platshållare. Med versionshanteringsbucketar kan objektversionen återställas, vilket möjliggör en återställning under respitperioden beroende på principinställningarna. Det är ett förväntat beteende.
Mer information om livscykelprinciper, versionshantering och förfallodatum i S3 finns i referensen i avsnittet "Ytterligare information" längst ned i den här artikeln.
Resolution
I en version som är aktiverad är det bättre att använda nedanstående exempel på livscykelprincip. Som i stället upphör att gälla för icke-aktuella versioner och även tar bort markörer (som är ett resultat av en direkt borttagning till ett objekt i en versionsbucket).
Exempel:
I det här exemplet tar S3 bort aktuella versioner (objekt) 60 dagar efter att de har skapats genom att lägga till en borttagningsmarkör för var och en av de aktuella objektversionerna. Den här processen gör den aktuella versionen inaktuell och borttagningsmarkören blir den aktuella versionen.
Informationen NoncurrentVersionExpiration åtgärd i samma S3-livscykelkonfiguration tar bort icke-aktuella objekt 30 dagar efter att de har blivit inaktuella. I det här exemplet tas därför alla objektversioner bort permanent 90 dagar efter att objektet har skapats.
VIKTIG ANMÄRKNING: Livscykelprinciper bör hanteras med försiktighet, ange antalet dagar och åtgärder som matchar dina programbehov. Principen nedan är bara ett exempel, den upphör att gälla både dmarkers och icke-aktuella versioner som gör borttagningar oåterkalleliga.
<LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
Additional Information
Mer information om beteendet för förfallodatum för principer i versions- och icke-versionsbucketar finns här. 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
Ytterligare förklaringar finns i manualen för dataåtkomst i ECS med information om hur du ställer in livscykelpolicy
https://dl.dell.com/content/manual53094723-ecs-3-8-x-data-access-guide.pdf