Жизненный цикл S3 — это набор правил, автоматизирующих переход объектов между классами хранения и их удаление по заданным условиям (время, дата, версии). Это позволяет оптимизировать затраты на хранение данных без ручного вмешательства.
В данной инструкции настройка жизненного цикла будет показана двумя способами: с помощью AWS CLI и с помощью REST API на примере Postman.
Предварительные настройки
- Должен быть создан бакет в интерфейсе ЛКК – https://console.inferit.cloud/storage . В данном примере – test-bucket-inferit.

- Для пользователя, от имени которого создавался бакет, должен быть известен Access Key и Secret Key. Эти данные показываются при создании пользователя.
Работа с помощью AWS CLI
Установка на Linux
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" sudo apt install unzip unzip awscliv2.zip sudo ./aws/install aws --versionУстановка на Windows
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msiНастройка
aws configure # Ввести: # AWS Access Key ID: YOUR_ACCESS_KEY # AWS Secret Access Key: YOUR_SECRET_KEY # Default region name: None # Default output format:json#
Добавить эндпоинт в конфигурацию aws configure set endpoint_urlhttps://s3.inferit.cloud#
Проверить работу загрузив список бакетов aws s3api list-bucketsПри проблемах, вывести текущую конфигурацию (aws configure list) и проверить настройки файлов (~/.aws/config и ~/.aws/credentials).
Пример 1. Добавление правила с перемещением всех объектов в холодное хранилище через 30 дней
- Создать файл example-rule-1.json:
{ "Rules": [ { "ID": "MoveToGlacierAfter30Days", "Status": "Enabled", "Filter": { "Prefix": "" }, "Transitions": [ { "Days": 30, "StorageClass": "GLACIER" } ] } ] } - Применить конфигурацию заменив имя бакета test-bucket-inferit на требуемое. Запускать нужно в той же директории, где и сам файл лежит.
aws s3api put-bucket-lifecycle-configuration --bucket test-bucket-inferit --lifecycle-configuration file://example-rule-1.json
Пример 2. Удаление всех объектов через 30 дней
- Создать файл example-rule-2.json:
{ "Rules": [ { "ID": "DeleteAfter30Days", "Status": "Enabled", "Filter": {}, "Expiration": { "Days": 30 } } ] } - Применить конфигурацию заменив имя бакета test-bucket-inferit на требуемое. Запускать нужно в той же директории, где и сам файл лежит.
aws s3api put-bucket-lifecycle-configuration --bucket test-bucket-inferit --lifecycle-configuration file://example-rule-2.json
Пример 3. Перемещение всех объектов в холодное хранилище через 30 дней, а через 365 дней удаление их.
- Создать файл example-rule-3.json:
{ "Rules": [ { "ID": "TransitionThenDelete", "Status": "Enabled", "Filter": {}, "Transitions": [ { "Days": 30, "StorageClass": "GLACIER" } ], "Expiration": { "Days": 365 } } ] } - Применить конфигурацию заменив имя бакета test-bucket-inferit на требуемое. Запускать нужно в той же директории, где и сам файл лежит.
aws s3api put-bucket-lifecycle-configuration --bucket test-bucket-inferit --lifecycle-configuration file://example-rule-3.json
Пример 4. Удаление старых версий объектов (если включено версионирование). Удаление происходит через 30 дней с момента, когда версия объекта стала “неактуальной”.
- Создать файл example-rule-4.json:
{ "Rules": [ { "ID": "DeleteNoncurrentVersions", "Status": "Enabled", "Filter": {}, "NoncurrentVersionExpiration": { "NoncurrentDays": 30 } } ] } - Применить конфигурацию заменив имя бакета test-bucket-inferit на требуемое. Запускать команду нужно в директории, где лежит файл.
aws s3api put-bucket-lifecycle-configuration --bucket test-bucket-inferit --lifecycle-configuration file://example-rule-4.json
Пример 5. Вывести все правила жизненного цикла для бакета.
Выполнить код заменив имя бакета test-bucket-inferit на требуемое.
aws s3api get-bucket-lifecycle-configuration --bucket test-bucket-inferitПример 6. Удалить все правила жизненного цикла для бакета.
Выполнить код заменив имя бакета test-bucket-inferit на требуемое.
aws s3api delete-bucket-lifecycle --bucket test-bucket-inferitРабота с помощью REST API
Для работы с API потребуются консольные утилиты (curl, wget) или графические утилиты (Postman, Insomnia). Далее примеры будет на Insomnia, поскольку он бесплатный и Open Source.
Установка
Для установки необходимо скачать установщик с официального сайта – https://insomnia.rest/download . Доступны реализации для Windows, Linux, Mac.
Настройка
Чтобы запросы к объектному хранилищу выполнялись успешно, в программе необходимо внести настройки: Method, URL, Auth, Body.
- Перейти на вкладку Auth, выбрать метод авторизации AWS IAM.
- Заполнить поля как на скриншоте:
Access Key – ключ доступа для пользователя ЛКК
Secret Key – секретный ключ для пользователя ЛКК
Region – None
Service – s3 - Перейти на вкладку Body, выбрать содержимое в формате XML и заполнить содержимое (при необходимости).
- Указать S3 Endpoint для отправки запроса и нажать кнопку Send.
- Справа будет вернувшийся результат.
Пример 1. Запрос всех бакетов.
GET https://s3.inferit.cloud/ No BodyПример 2. Вывести существующий жизненный цикл для бакета. Имя бакета нужно указать в Endpoint.
GET https://s3.inferit.cloud/test-bucket-inferit?lifecycle No BodyПример 3. Задать жизненный цикл бакета, который будет перемещать все объекты в холодное хранилище через 30 дней. Имя бакета нужно указать в Endpoint.
PUT https://s3.inferit.cloud/test-bucket-inferit?lifecycle # Body XML <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>MoveToGlacierAfter30Days</ID> <Status>Enabled</Status> <Filter> <Prefix></Prefix> </Filter> <Transition> <Days>30</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>Пример 4. Удаление всех объектов через 30 дней. Имя бакета нужно указать в Endpoint.
PUT https://s3.inferit.cloud/test-bucket-inferit?lifecycle # Body XML <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>MoveToGlacierAfter30Days</ID> <Status>Enabled</Status> <Filter> <Prefix></Prefix> </Filter> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>Пример 5. Перемещение всех объектов в ледяное хранилище через 30 дней, а через 365 дней удалить их. Имя бакета нужно указать в Endpoint.
PUT https://s3.inferit.cloud/test-bucket-inferit?lifecycle # Body XML <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>TransitionThenDelete</ID> <Status>Enabled</Status> <Filter></Filter> <Transition> <Days>30</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>На этом с примерами все!
- Создать файл example-rule-1.json: