Настройка правил
Конфигурация жизненного цикла представляет собой набор правил. Правила определяются в формате JSON и включают следующую информацию:
- уникальное имя правила;
- статус (
Enabled— правило активно,Disabled— неактивно); - область применения правила (все объекты без исключения, объекты с указанным префиксом или с указанными тегами);
- срок хранения объектов;
- действие, которое нужно совершить после окончания срока хранения.
Параметры конфигурации
| Параметр | Тип | Значение | Пример |
|---|---|---|---|
ID | Строка | Уникальный идентификатор правила, который помогает различать его среди других правил | "ID": "ArchiveOldLogs" |
Status | Строка | Указывает, активно ли правило. Возможные значения:
| "Status": "Enabled" |
Filter | Объект | Определяет, к каким объектам применяется правило. Может включать элементы:
| "Filter": { |
Expiration | Объект | Определяет срок хранения объекта. Может включать элементы:
| "Expiration": { |
NonCurrentVersionExpiration | Объект | Указывает срок хранения неактуальных версий объекта. Может включать элементы:
| "NoncurrentVersionExpiration": { |
ExpiredObjectDeleteMarker | Boolean | Указывает, нужно ли удалять маркеры удаления после удаления всех неактуальных версий объекта | "Expiration": { |
AbortIncompleteMultipartUpload | Объект | Указывает количество дней (DaysAfterInitiation), после которого незавершенные составные загрузки будут автоматически прерваны | "AbortIncompleteMultipartUpload": { |
Удаление объектов
С помощью правил жизненного цикла для объектов можно установить срок, по истечении которого они будут автоматически удаляться.
Вы можете сделать это двумя способами:
- указать конкретную дату, когда объекты должны быть удалены.
Операция удаления имеет свою специфику в зависимости от того, включено ли в бакете версионирование:
- Если версионирование не включено, объект будет удален после того, как закончится срок хранения.
- Если версионирование включено, операция удаления затронет только текущую версию объекта. Будет создан маркер удаления — он станет текущей версией, а предыдущие версии объекта останутся доступными.
- Если версионирование приостановлено, будет создан маркер удаления с идентификатором
null, который станет текущей версией объекта. Текущая версия при этом будет удалена без возможности восстановления, а все предыдущие — останутся доступными.
Важно
Объекты удаляются асинхронно. Фактическое удаление происходит по прошествии некоторого времени после истечения срока хранения.
Удаление по прошествии заданного срока
Вы можете указать в правилах количество дней, по прошествии которого объекты будут считаться подлежащими удалению. Срок хранения объектов всегда округляется до 00:00 UTC следующего дня после достижения указанных даты и времени.
Например, если вы загрузили объект 20 ноября 2025 года в 14:30 MSK (в 11:30 UTC) и назначили для него срок хранения в 1 день, этот срок истечет в 00:00 UTC (03:00 MSK) 22 ноября 2025 года. Начиная с 00:00 UTC 22 ноября 2025 года объект будет считаться подлежащим удалению.
При расчете сроков учитываются только полные дни. Например, если вы загрузили объект 21 ноября 2025 года в 23:59 MSK (в 20:59 UTC) и установили для него срок хранения в 1 день, этот срок истечет в 00:00 UTC (03:00 MSK) 23 ноября.
Пример 1: удалять объекты через 7 дней после загрузки
"Rules": [
{
"ID": "DeleteObjectsInThreeDays",
"Status": "Enabled",
"Filter": {
"Prefix": ""
},
"Expiration": {
"Days": 7
}
}
]
}Пример 2: удалять объекты с указанным префиксом
"Rules": [
{
"ID": "DeleteObjectsWithTheSpecifiedPrefixInAWeek",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"Expiration": {
"Days": 7
}
}
]
}Это правило распространяется не на все объекты в бакете, а только на объекты с префиксом logs/. Для таких объектов устанавливается срок хранения в 7 дней. После истечения этого срока они удаляются. ы
Пример 3: удалять объекты с указанными тегами
"Rules": [
{
"ID": "DeleteTaggedObjectsInAWeek",
"Filter": {
"And": {
"Prefix": "",
"Tags": [
{
"Value": "application",
"Key": "logs"
},
{
"Value": "documents",
"Key": "drafts"
}
]
}
},
"Status": "Enabled",
"Expiration": {
"Days": 7
}
}
]
}Это правило распространется не на все объекты в бакете, а только на объекты с тегами application:logs и documents:drafts. Для таких объектов устанавливается срок хранения в 7 дней. После истечения этого срока они удаляются.
Удаление в указанную дату
В правиле можно указать конкретную дату, когда будет удален объект. В этом случае объект считается подлежащим удалению начиная с 00:00 UTC этой даты независимо от времени загрузки.
Пример: удалить объект 31 декабря 2025 года
{
"Rules": [
{
"ID": "DeleteOnSpecificDate",
"Status": "Enabled",
"Filter": {},
"Expiration": {
"Date": "2025-12-31T00:00:00Z"
}
}
]
}Удаление неактуальных версий
С помощью правил жизненного цикла можно настроить автоматическое удаление неактуальных версий объекта.
Пример 1: удалять все неактуальные версии через 30 дней
{
"Rules": [
{
"ID": "DeleteNonCurrentVersionsAfter30Days",
"Status": "Enabled",
"Filter": {
"Prefix": ""
},
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
}
]
}Это правило указывает, что версии объекта утрачивают актуальность через 30 дней. После загрузки новой версии все предыдущие версии хранятся 30 дней, а затем удаляются.
Пример 2: ограничить количество неактуальных версий
{
"Rules": [
{
"ID": "LimitNonCurrentVersions",
"Status": "Enabled",
"Filter": {
"Prefix": ""
},
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
},
"NoncurrentVersionExpiration": {
"NewerNoncurrentVersions": 3
}
}
]
}Это правило не только устанавливает срок хранения для неактуальных версий, но и ограничивает их количество. Оно указывает, что в бакете должны храниться только 3 последние неактуальные версии объекта. Все старые неактуальные версии автоматически удаляются.
Удаление маркеров удаления
Когда из бакета с версионированием удаляется текущая версия объекта, а неактуальных версий больше не остается, маркер удаления становится единственной версией объекта. Удалять такие маркеры можно с помощью правила ExpiredObjectDeleteMarker.
Пример 1: удалять маркеры удаления после удаления последней неактуальной версии
{
"Rules": [
{
"ID": "DeleteAllLogs",
"Filter": {
"Prefix": "logs/"
},
"Status": "Enabled",
"Expiration": {
"ExpiredObjectDeleteMarker": true
},
"NoncurrentVersionExpiration": {
"NewerNoncurrentVersions": 10,
"NoncurrentDays": 30
}
}
]
}Это правило применяется ко все объектом с префиксом logs/. Оно указывает, что в бакете должны храниться 10 неактуальных версий объекта. Версия становится неактуальной через 30 дней с момента загрузки. После удаления последней неактуальной версии оставшийся маркер удаления удаляется автоматически.
Пример 2: удалять маркеры удаления после истечения указанного срока
{
"Rules": [
{
"Status": "Enabled",
"Prefix": "",
"Expiration": {
"Days": 30,
"ExpiredObjectDeleteMarker": true
}
}
]
}Это правило указывает, что маркер удаления будет удален через 30 дней после создания.
Остановка незавершенных загрузок
Незавершенные загрузки можно удалять с помощью правил жизненного цикла. Это поможет не прибегать к ручному удалению, а также упростит поддержание порядка и чистоты данных.
Пример 1: останавливать незавершенные загрузки через 7 дней после начала
{
"Rules": [
{
"ID": "AbortAllIncompleteUploadsAfter7Days",
"Status": "Enabled",
"Filter": {
"Prefix": ""
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
}
]
}Это правило предписывает останавливать все незавершенные загрузки через 7 дней после начала.
Пример 2: останавливать незавершенные загрузки для объектов с указанным префиксом
{
"Rules": [
{
"ID": "AbortUploadsForLogsAfter3Days",
"Status": "Enabled",
"Filter": {
"Prefix": "logs/"
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 3
}
}
]
}Это правило предписывает останавливать не все незавершенные загрузки, а только загрузки объектов с префиксом logs/. Загрузки будут прерваны через 3 дня после начала.
Пример 3: останавливать все незавершенные загрузки для объектов с указанными тегами
{
"Rules": [
{
"ID": "AbortTaggedUploadsAfter5Days",
"Status": "Enabled",
"Filter": {
"Tags": [
{"Key": "Project", "Value": "Archive"}
]
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 5
}
}
]
}Это правило предписывает останавливать не все незавершенные загрузки, а только загрузки объектов c тегом Project:Archive. Загрузки будут остановлены через 5 дней после начала.