ECS: Zasady cyklu życia obiektu nie wygasają wersji
Summary: Skonfigurowane przez użytkownika zasady cyklu życia obiektu z opcją "Wygaśnięcie" w celu automatycznego usuwania obiektów. Jednak ponieważ bucket ma włączone przechowywanie wersji, niebieżące wersje nie są usuwane. ...
Symptoms
Uwaga: Poniższy problem nie dotyczy zasobników zawieszonych lub z wyłączonym przechowywaniem wersji.
1. W zasobniku z włączoną wersją zasady cyklu życia są ustawione tak, jak w poniższym przykładzie, aby wygasać obiekty. Zasady zostały skonfigurowane tak, aby automatycznie wygasały i usuwały obiekty po 1 dniu.
<?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. W przypadku obiektów, które nigdy nie miały utworzonych wersji, powyższe zasady wygasania obiektów powodują wstawienie znacznika usunięcia w celu zastąpienia bieżącego obiektu. W ten sposób bieżący obiekt staje się nieaktualną wersją, a nie zostaje usunięty
Przykład:
Przed spełnieniem zasad istnieje jeden obiekt i jest on najnowszy
[VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: 54270 [OBJECT]: sample.object
Po dopasowaniu zasad (po 1 dniu) następuje wygaśnięcie, ale obiekt zamienia się w nieaktualną wersję, a dmarker jest wstawiany jako najnowszy obiekt.
[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.
Użytkownicy, którzy oczekują od tej zasady widoku obiektu, zostaną całkowicie usunięci.
Cause
Oczekiwanie z przykładu zasad wspomnianego w poprzedniej sekcji jest błędne w przypadku zasobników wersji. Jest to jednak prawdą w przypadku zasobników niewersjonujących, ponieważ w zasobnikach niewersjonujących obiekt wygasa od razu i zostaje usunięty, stając się niemożliwy do odzyskania.
Z kolei w przypadku zasobników przechowywania wersji protokoły S3 inaczej obsługują wygaśnięcie obiektów, zamiast tego przenoszą obiekt do niebieżącej wersji. I dodaje znacznik usuwania jako symbol zastępczy. Za pomocą zasobników wersji można odzyskać wersję obiektu, co umożliwia odzyskiwanie w okresie prolongaty w zależności od ustawień zasad. Jest to zachowanie oczekiwane.
Aby uzyskać więcej informacji na temat zasad cyklu życia, wersji i wygasania w wersji S3, zapoznaj się z sekcją "dodatkowe informacje" w dolnej części tego artykułu.
Resolution
W zasobniku z włączoną wersją lepiej jest użyć poniższego przykładu zasad cyklu eksploatacji. Co zamiast tego wygasa nieaktualne wersje, a także znaczniki usuwania (które są wynikiem bezpośredniego usuwania obiektu w zasobniku wersji).
Przykład:
W tym przykładzie S3 usuwa bieżące wersje (obiekty) 60 dni po ich utworzeniu, dodając znacznik usuwania dla każdej z bieżących wersji obiektów. Ten proces powoduje, że bieżąca wersja staje się nieaktualna, a znacznik usuwania staje się bieżącą wersją.
Polecenie NoncurrentVersionExpiration Akcja w tej samej konfiguracji cyklu życia S3 usuwa obiekty niebieżące po upływie 30 dni od dnia, w którym stały się niebieżące. Dlatego w tym przykładzie wszystkie wersje obiektów są trwale usuwane 90 dni po utworzeniu obiektu.
WAŻNA UWAGA : Zasady cyklu życia powinny być traktowane ostrożnie, określać liczbę dni i akcji, które odpowiadają potrzebom aplikacji. Poniższa polityka jest tylko przykładem, wygasa zarówno dmarkery, jak i nieaktualne wersje, co sprawia, że usunięcia są niemożliwe do odzyskania.
<LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
Additional Information
Więcej informacji na temat wygaśnięcia zasad w zasobnikach wersjonowanych i niewersjonowanych można znaleźć tutaj; 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
Dalsze wyjaśnienia można również znaleźć w przewodniku ECS dotyczącym dostępu do danych ze szczegółami dotyczącymi sposobu ustawiania zasad cyklu życia
https://dl.dell.com/content/manual53094723-ecs-3-8-x-data-access-guide.pdf