Правила жизненного цикла объектов бакета позволяют настроить их автоудаление согласно заданным условиям и расписанию. Это целесообразно для удаления неактуальных данных и экономии средств, затрачиваемых на их хранение. Для каждого бакета может быть создано несколько правил жизненного цикла.
Консоль Cloud Hub
AWS CLI
S3 API
В списке бакетов выберите тот, в котором необходимо создать правило жизненного цикла.
Перейдите на вкладку Жизненный цикл.
Нажмите на кнопку Добавить правило.
В окне Создание правила:
Введите название правила. Допустимы латинские буквы, цифры и символы.
Включите правило.
Примените правило для всех объектов бакета, если это необходимо. В данном случае префикс ключа объекта и теги не требуются.
Введите префикс ключа, используемого для фильтрации объектов, попадающих под действие правила. Если значение префикса оставить пустым, правило применится ко всем объектам бакета.
Если ранее объектам были присвоены теги и создаваемое правило будет касаться данных объектов, нажмите на кнопку Добавить тег и введите ключ и значение тега (метки) объекта. Чтобы присвоить тег объекту, откройте данный объект в бакете и нажмите на соответствующую кнопку.
Включите требуемый запрос на удаление: Удаление активных версий объектов, Удаление устаревших версий объектов, Удаление устаревших маркеров удаления или Удаление незавершенных загрузок.
Укажите период, через который требуется произвести данное удаление: количество дней, месяцев или лет.
Проверьте текстовое описание правила и нажмите на кнопку Создать правило.
Чтобы изменить или удалить правило, вызовите меню операций, нажав на кнопку … рядом с именем правила.
Конфигурация жизненного цикла для AWS CLI задается в формате JSON.
Далее в примере описано правило для автоматического удаления объектов из бакета через 90 дней после загрузки. Элементы конфигурации:
Rules – описание правил.
ID – уникальный идентификатор правила. Необязательный параметр, используемый для поиска правила в конфигурации. Допустимы латинские буквы, цифры и символы. Если параметр не задан, он сгенерируется автоматически.
Filter – фильтр объектов, который может содержать не более одного элемента Prefix. Если фильтр оставить пустым, правило применется ко всем объектам бакета.
Prefix – префикс ключа, используемого для фильтрации объектов, попадающих под действие правила. Например: docs/, logs/, tax/ и т.д.
Status – статус правила. Enabled – правило активировано, Disabled – правило отключено.
Expiration – правило для удаления объекта из хранилища. Содержит элементы Days или Date, который определяет сроки удаления объекта из хранилища. Одно правило может одновременно содержать только один элемент.
json
1
{
2
"Rules": [
3
{
4
"ID": "Del Old Docs",
5
"Filter": {
6
"Prefix": "docs/"
7
},
8
"Status": "Enabled",
9
"Expiration": {
10
"Days": 90
11
}
12
}
13
]
14
}
Сохраните готовую конфигурацию в файле в формате JSON и загрузите в объектное хранилище. Команды для загрузки, скачивания и удаления конфигурации жизненного цикла для AWS CLI описаны в данной статье.
Конфигурация жизненного цикла для S3 API задается в формате XML. При скачивании существующей конфигурации будет получен документ такого же формата.
Общий вид конфигурации выглядит следующим образом:
xml
1
<LifecycleConfiguration>
2
<Rule>
3
<ID>Описание правила</ID>
4
<Status>{Enabled|Disabled}</Status>
5
<Filter>
6
<Prefix>префикс ключа</Prefix>
7
<Tag>
8
<Key>ключ метки</Key>
9
<Value>значение метки</Value>
10
</Tag>
11
</Filter>
12
13
<Expiration>
14
<!-- <Date> или <Days> -->
15
<!-- <ExpiredObjectDeleteMarker> -->
16
</Expiration>
17
18
<NoncurrentVersionExpiration>
19
<NoncurrentDays>Удаление версий, которые старше указанного количества дней</NoncurrentDays>
20
</NoncurrentVersionExpiration>
21
22
<AbortIncompleteMultipartUpload>
23
<DaysAfterInitiation>Удаление загрузок, не завершенных за указанное количество дней</DaysAfterInitiation>
24
</AbortIncompleteMultipartUpload>
25
...
26
</Rule>
27
<Rule>
28
...
29
</Rule>
30
...
31
</LifecycleConfiguration>
Элементы конфигурации:
LifecycleConfiguration – корневой элемент конфигурации. Может содержать не более 1000 правил.
Rule – описание правила. В описании одного правила может быть указано более одного действия.
ID– уникальный идентификатор правила. Необязательный параметр, используемый для поиска правила в конфигурации. Допустимы латинские буквы, цифры и символы. Если параметр не задан, он сгенерируется автоматически.
Status – статус правила. <Status>Enabled</Status> – правило активировано, <Status>Disabled</Status> – правило отключено.
Filter – фильтр объектов, определяющий какие из них попадают по действие правила.
Prefix – префикс ключа, используемого для фильтрации объектов, попадающих под действие правила. Например: docs/, logs/, tax/ и т.д. Возможно создание только одного префикса в фильтре.
Tag – тег (метка) объекта. Под действие правила попадают объекты, которым присвоена указанная метка. Возможно создание только одного префикса в фильтре.
Key – ключ метки объекта.
Value – значение метки объекта.
Expiration – правило для удаления объекта из объектного хранилища. Содержит элементы Days или Date, определяющие сроки исполнения действия.
Days – количество дней после загрузки объекта, когда правило должно выполниться.
Date – дата исполнения правила. Формат — ISO 8601, например, YYYY-MM-DD. Время всегда 00:00 UTC.
ExpiredObjectDeleteMarker — маркер удаления объекта с истекшим сроком действия, который указывает, удалит ли хранилище маркер удаления при отсутствии неактивных версий. Может содержаться дополнительно.
NoncurrentVersionExpiration– правило для удаления неактивных версий объекта. Применяется не ко всему объекту, а только к его неактивным версиям. Содержит элемент NoncurrentDays, определяющий сроки выполнения действия.
AbortIncompleteMultipartUpload – правило для удаления загрузок, не завершенных за указанное количество дней. Содержит элемент DaysAfterInitiation, который определяет срок выполнения правила.
Таким образом, пример удаления всех объектов бакета 31 августа 2024 года и удаления частично загруженных объектов через 3 дня после начала загрузки выглядит так:
xml
1
<LifecycleConfiguration>
2
<Rule>
3
<ID>Delete_1</ID>
4
<Status>Enabled</Status>
5
<Filter>
6
<Prefix></Prefix>
7
</Filter>
8
<Expiration>
9
<Date>2024-08-31</Date>
10
</Expiration>
11
<AbortIncompleteMultipartUpload>
12
<DaysAfterInitiation>3</DaysAfterInitiation>
13
</AbortIncompleteMultipartUpload>
14
</Rule>
15
</LifecycleConfiguration>
Сохраните готовую конфигурацию в файле в формате XML и загрузите конфигурацию в объектное хранилище.
Методы для загрузки, скачивания и удаления конфигурации жизненного цикла для S3 API: