Жизненный цикл
Объектное хранилище S3 позволяет оптимизировать управление данными через настройку жизненного цикла объектов. Эта функция помогает автоматизировать процессы хранения, минимизировать затраты и поддерживать порядок в бакетах, задавая правила для управления объектами.
Принципы работы
Конфигурация жизненного цикла — это набор инструкций в формате JSON, которые определяют:
- как долго объекты должны храниться;
- какие действия выполняются с объектами по истечении заданного времени.
Правила применяются на уровне бакета и могут охватывать:
- все объекты в бакете без исключения;
- объекты, отобранные по фильтрам, таким как префиксы (например, logs/), теги или другие метаданные.
Доступные действия
Правила жизненного цикла поддерживают следующие операции:
Автоматическое удаление объектов:
Задайте срок хранения (например, 30 дней), после которого объекты будут удалены из бакета;
Очистка устаревших версий:
Если в бакете включено версионирование, можно указать период, после которого старые версии объектов будут автоматически удаляться, освобождая место;
Прерывание незавершенных загрузок:
Для составных (multipart) загрузок можно установить время, по истечении которого незавершенные процессы будут автоматически остановлены, чтобы избежать накопления временных данных.
Особенности и ограничения
Применение только на уровне бакета:
Правила жизненного цикла нельзя настроить для отдельных объектов — они действуют на весь бакет или его часть, определенную фильтрами;
Универсальность действия:
Правила затрагивают как существующие, так и вновь загруженные объекты. Например, если вы установите правило удаления объектов старше 60 дней, все объекты, соответствующие этому критерию, независимо от даты их загрузки, будут удалены;
Задержка активации:
Новые или измененные правила вступают в силу с небольшой задержкой (обычно несколько часов). Учитывайте это при автоматизации процессов;
Приоритет над политиками доступа:
Правила жизненного цикла имеют более высокий приоритет, чем политики доступа бакета. Например, если политика бакета запрещает удаление объектов, но правило жизненного цикла предписывает удаление, объекты будут удалены;
Логирование изменений:
Рекомендуется включить логирование операций в бакете, чтобы отслеживать действия, выполненные по правилам жизненного цикла, для последующего анализа или аудита.
Рекомендации
- Тестируйте правила на небольшом наборе данных перед применением к большому бакету;
- Используйте понятные идентификаторы (ID) для правил, чтобы облегчить их управление;
- Регулярно проверяйте логи, чтобы убедиться, что правила работают корректно и не удаляют важные данные.
Параметры правил жизненного цикла объектного хранилища
Таблица ниже описывает ключевые параметры для настройки правил жизненного цикла в объектном хранилище. Эти параметры определяют условия и действия для автоматического управления объектами в бакете.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| ID | Строка | Уникальный идентификатор правила, отличающий его от других в бакете. | "ID": "CleanupTempFiles" |
| Status | Строка | Состояние правила: Enabled — активно; Disabled — неактивно. | "Status": "Enabled" |
| Filter | Объект | Условие применения правила:Prefix — фильтр по пути объекта; Tags — фильтр по тегам. | "Filter": {"Prefix": "temp/","Tags": [{"Key": "Project", "Value": "Test"}]} |
| Expiration | Объект | Срок удаления объекта:Days — через указанное число дней;Date — в указанную дату. | "Expiration": { "Days": 90 } |
| NoncurrentVersionExpiration | Объект | Срок удаления старых версий: NoncurrentDays — дни до удаления; NewerNoncurrentVersions — число версий для сохранения. | "NoncurrentVersionExpiration": { "NoncurrentDays": 60, "NewerNoncurrentVersions": 2 } |
| AbortIncompleteMultipartUpload | Объект | Прерывание незавершенных загрузок: DaysAfterInitiation — дни с начала загрузки. | "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 14 } |
Примечания
ID: Используйте понятные имена, отражающие назначение правила, например, CleanupTempFiles для удаления временных файлов. Filter: Без фильтра правило затрагивает все объекты в бакете, что может быть нежелательно. Expiration: Полезно для автоматического удаления устаревших данных, таких как временные медиафайлы. NoncurrentVersionExpiration: Применяется только при включенном версионировании бакета. AbortIncompleteMultipartUpload: Очищает незавершенные загрузки, экономя место в хранилище.
Прерывание незавершенных составных загрузок
Составная загрузка позволяет загружать большие объекты частями. Если загрузка остается незавершенной, это может привести к проблемам:
- загруженные части занимают место, увеличивая затраты;
- усложняется управление данными в бакете;
- при удалении бакета требуется ручная очистка.
Правила жизненного цикла помогают автоматически прерывать незавершенные загрузки, освобождая пространство и упрощая управление.
Для управления жизненным циклом см. инструкцию Управление жизненным циклом объекта. Для ознакомления с примерами см. статью Примеры конфигураций правил жизненного цикла объекта.