ЕКС: Політика життєвого циклу об'єкта не має терміну дії версій
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 днів після створення об'єкта.
ВАЖЛИВЕ ЗАУВАЖЕННЯ: До політик життєвого циклу слід ставитися обережно, вказувати кількість днів і дій, які відповідають потребам вашої програми. Наведена нижче політика є лише прикладом, вона втрачає чинність як 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