Управление жизненными циклами объектов в бакете
Object Storage позволяет управлять жизненными циклами объектов в бакете.
Раз в сутки к жизненным циклам применяются изменения, актуальные на момент 00:00 UTC. Операция выполняется в течение нескольких часов.
-
В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого хотите настроить жизненные циклы объектов. -
На панели слева выберите
Настройки. -
Выберите вкладку Жизненный цикл.
-
Нажмите Настроить.
-
Заполните открывшуюся форму. Вы можете добавлять, удалять и редактировать правила конфигурации.
Чтобы создать правило:
-
Включите опцию Статус. При помощи этой опции вы можете включить или выключить правило, не удаляя его из конфигурации.
-
Заполните поля:
- Описание — опишите правило в произвольной форме.
- Префикс — часть ключа объекта необходимой длины, взятая от его начала. По префиксу отбираются объекты, попадающие под действие правила. Если под действие правила должны попадать все объекты, оставьте поле пустым.
- Добавить метку — правило срабатывает для всех объектов c указанными метками.
- Максимальный размер в байтах — правило срабатывает для всех объектов, размер которых меньше или равен указанному.
- Минимальный размер в байтах — правило срабатывает для всех объектов, размер которых больше или равен указанному.
-
Выберите и настройте нужные типы действий, выполняемые с объектами при срабатывании правила:
-
Expiration
— удаление любых объектов из бакета:Количество дней
— срабатывает через указанное в поле Срок срабатывания количество дней после загрузки объекта.Точная дата
— срабатывает в дату, указанную в поле Дата срабатывания.Маркер удаления без нетекущих версий
— удаляет маркер удаления, для которого больше не существует неактуальных версий объекта.
-
Transition
— перемещение любых объектов из стандартного (STANDARD
) в холодное (COLD
) или (ICE
) ледяное хранилище:Количество дней
— срабатывает через указанное в поле Срок срабатывания количество дней после загрузки объекта.Точная дата
— срабатывает в дату, указанную в поле Дата срабатывания.- Класс хранилища — тип хранилища, в которое будут перемещены объекты.
-
NoncurrentVersionExpiration
— удаление нетекущих версий объектов из бакета. Срабатывает через указанное в поле Срок срабатывания количество дней после того, как версия объекта стала нетекущей. -
NoncurrentVersionTransition
— перемещение нетекущих версий объектов из стандартного (STANDARD
) в холодное (COLD
) или (ICE
) ледяное хранилище:- Срок срабатывания — количество дней, через которое сработает правило после того, как версия объекта стала нетекущей.
- Класс хранилища — тип хранилища, в которое будут перемещены объекты.
-
AbortIncompleteMultipartUpload
— удаление всех частей незавершенных составных загрузок из бакета. Срабатывает через указанное в поле Срок срабатывания количество дней после загрузки объекта.
-
-
Нажмите Сохранить.
Вы можете добавить одновременно несколько правил. Чтобы добавить новое правило нажмите Добавить правило и повторите шаги инструкции, указанные выше.
Дополнительную информацию смотрите в разделе Конфигурация жизненных циклов объектов в бакете.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Опишите конфигурацию жизненных циклов объектов в формате JSON. Например:
{ "lifecycleRules": [ { "id": "DeleteOldBackups", "enabled": true, "filter": { "prefix": "backup/" }, "transitions": [ { "date": "2025-01-01T00:00:00Z", "storage_class": "ICE" } ], "expiration": { "days": "180" } } ] }
Возможные параметры конфигурации:
-
id
— уникальный идентификатор правила. Должен быть меньше или равен 255 символам. Необязательный параметр. -
enabled
— состояние правила. Обязательный параметр. -
filter
— фильтр объектов. Необязательный параметр. Может содержать не более одного элемента каждого типа:-
prefix
— префикс ключа объекта, идентифицирующий один или несколько объектов, к которым применяется правило. Под действие правила попадают объекты с указанным префиксом ключа. Необязательный параметр. -
objectSizeGreaterThan
— минимальный размер объекта в байтах. Под действие правила попадают объекты, размер которых больше или равен указанному. Необязательный параметр. -
objectSizeLessThan
— максимальный размер объекта в байтах. Под действие правила попадают объекты, размер которых меньше или равен указанному. Необязательный параметр. -
tag
— метка объекта. Необязательный параметр. Под действие правила попадают объекты, которым присвоена указанная метка. Передается в виде записи, содержащей две пары значений, например:"tag": [{"key": "some_key", "value": "some_value"}]
-
andOperator
— логический оператор И (AND
) для фильтров. Необязательный параметр. Используйте этот фильтр, чтобы сочетать в одном правиле фильтрацию по префиксу, размеру или меткам объекта. С помощью логического оператораandOperator
вы можете настроить фильтрацию одновременно по нескольким меткам. Для этого в ключеtag
передайте метки в виде массива объектов, содержащих по две пары значений.Пример фильтра с логическим оператором И (
AND
):"filter": { "andOperator": { "prefix": "backup/", "tag": [ { "key": "key_1", "value": "value_1" }, { "key": "key_2", "value": "value_2" } ], "objectSizeGreaterThan": "16", "objectSizeLessThan": "1024" } }
Если фильтр объектов не задан, под действие правила попадают все объекты в бакете.
-
-
transitions
— параметр правила для изменения класса хранилища любых объектов со стандартного (STANDARD
) на холодное (COLD
,STANDARD_IA
) или ледяное (ICE
) и с холодного на ледяное. Необязательный параметр. Может содержать:date
— дата, после которой вы хотите, чтобы действие вступило в силу. Формат — ISO 8601 , напримерYYYY-MM-DDT00:00:00Z
. Время — всегда 00:00 UTC. Ключdate
нельзя использовать одновременно с ключомdays
. Необязательный параметр.days
— количество дней после создания объекта, когда действие правила вступает в силу. Минимальное значение —1
. Ключdays
нельзя использовать одновременно с ключомdate
. Необязательный параметр.storage_class
— класс хранилища, в который будет перенесен объект. Может бытьCOLD
,STANDARD_IA
илиICE
. Обязательный параметр.
Передается в виде массива, например:
"transitions": [{ "days": "<количество_дней>", "storage_class": "<класс_хранилища>" }]
-
expiration
— параметр правила для удаления любых объектов. Необязательный параметр. Может содержать:date
— дата, после которой вы хотите, чтобы действие вступило в силу. Формат — ISO 8601 , напримерYYYY-MM-DDT00:00:00Z
. Время — всегда 00:00 UTC. Ключdate
нельзя использовать одновременно с ключомdays
. Необязательный параметр.days
— количество дней после создания объекта, когда действие правила вступает в силу. Минимальное значение —1
. Ключdays
нельзя использовать одновременно с ключомdate
. Необязательный параметр.expired_object_delete_marker
— удаляет маркер удаления, для которого больше не существует неактуальных версий объекта. Принимает значенияtrue
илиfalse
. Необязательный параметр.
-
noncurrent_transitions
— параметр правила для изменения класса хранилища неактивных версий объектов со стандартного (STANDARD
) на холодное (COLD
,STANDARD_IA
) или ледяное (ICE
) и с холодного на ледяное. Необязательный параметр. Может содержать:noncurrent_days
— количество дней до перехода. Минимальное значение —1
. Обязательный параметр.storage_class
— класс хранилища, в который будет перенесен объект. Может бытьCOLD
,STANDARD_IA
илиICE
. Обязательный параметр.
-
noncurrent_expiration
— параметр правила для удаления неактивных версий объектов. Необязательный параметр. Может содержать:noncurrent_days
— количество дней истечения срока действия. Минимальное значение —1
. Обязательный параметр.
-
abort_incomplete_multipart_upload_days
— параметр правила для удаления всех частей составных загрузок, не завершенных за указанное количество дней. Необязательный параметр. -
noncurrent_delete_markers
— параметр правила для удаления неактивных маркеров удаления. Необязательный параметр. Может содержать:noncurrent_days
— действие правила вступает в силу спустя заданное в этом параметре количество дней с момента классификации версии маркера удаления как неактивной. Минимальное значение —0
. Обязательный параметр.
Необходимо указать хотя бы один из параметров
transitions
,expiration
,noncurrent_transitions
,noncurrent_expiration
,abort_incomplete_multipart_upload_days
.Сохраните готовую конфигурацию в файле, например
lifecycles.json
. -
-
Посмотрите описание команды CLI для изменения бакета:
yc storage bucket update --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Сохраните имя бакета (
NAME
), в котором нужно настроить жизненные циклы объектов. -
Выполните следующую команду:
yc storage bucket update \ --name <имя_бакета> \ --lifecycle-rules-from-file <путь_к_файлу_конфигурации>
Где:
--name
— имя бакета, в котором нужно настроить жизненные циклы.--lifecycle-rules-from-file
— путь к файлу c конфигурацией жизненных циклов.
Конфигурация, указанная в команде, перезаписывает настройки жизненных циклов, которые уже есть у бакета. Получить текущие настройки можно с помощью команды
yc storage bucket get <имя_бакета> --full
.
Чтобы удалить конфигурацию жизненных циклов, выполните команду:
yc storage bucket update \
--name <имя_бакета> \
--remove-lifecycle-rules
Чтобы загрузить конфигурацию с помощью AWS CLI:
-
Опишите конфигурацию жизненных циклов объектов в формате JSON. Например:
{ "Rules": [ { "ID": "DeleteOldBackups", "Filter": { "Prefix": "backup/" }, "Status": "Enabled", "Transitions": [ { "Date": "2025-01-01", "StorageClass": "ICE" } ], "Expiration": { "Days": 180 } } ] }
Возможные параметры конфигурации:
-
ID
— уникальный идентификатор правила. Должен быть меньше или равен 255 символам. Необязательный параметр. -
Filter
— фильтр объектов. Необязательный параметр. Может содержать не более одного элемента каждого типа:-
Prefix
— префикс ключа объекта. Под действие правила попадают объекты с указанным префиксом ключа. Необязательный параметр. -
ObjectSizeGreaterThan
— минимальный размер объекта в байтах. Под действие правила попадают объекты, размер которых больше или равен указанному. Необязательный параметр. -
ObjectSizeLessThan
— максимальный размер объекта в байтах. Под действие правила попадают объекты, размер которых меньше или равен указанному. Необязательный параметр. -
Tag
— метка объекта. Необязательный параметр. Под действие правила попадают объекты, которым присвоена указанная метка. Передается в виде записи, содержащей две пары значений, например:"Tag": [{"Key": "some_key", "Value": "some_value"}]
-
And
— логический оператор И (AND
) для фильтров. Необязательный параметр. Используйте этот фильтр, чтобы сочетать в одном правиле фильтрацию по префиксу, размеру или меткам объекта. С помощью логического оператораAnd
вы можете настроить фильтрацию одновременно по нескольким меткам. Для этого в ключеTags
передайте метки в виде массива объектов, содержащих по две пары значений.Пример фильтра с логическим оператором И (
AND
):"Filter": { "And": { "Prefix": "backup/", "Tags": [ { "Key": "key_1", "Value": "value_1" }, { "Key": "key_2", "Value": "value_2" } ], "ObjectSizeGreaterThan": 1, "ObjectSizeLessThan": 1024 } }
Если фильтр объектов не задан, под действие правила попадают все объекты в бакете.
-
-
Status
— статус правила. Обязательный параметр. Значения:Enabled
— правило включено.Disabled
— правило выключено.
-
Transitions
— параметр правила для изменения класса хранилища любых объектов со стандартного (STANDARD
) на холодное (COLD
,STANDARD_IA
) или ледяное (ICE
) и с холодного на ледяное. Необязательный параметр. Может содержать:Date
— дата, после которой изменится класс хранилища. Формат — ISO 8601 , напримерYYYY-MM-DD
. Время — всегда 00:00 UTC. КлючDate
нельзя использовать одновременно с ключомDays
. Необязательный параметр.Days
— количество дней с момента создания объекта, после которого изменится класс хранилища. Минимальное значение —1
. КлючDays
нельзя использовать одновременно с ключомDate
. Необязательный параметр.StorageClass
— класс хранилища, в который будет перенесен объект. Может бытьCOLD
,STANDARD_IA
илиICE
. Обязательный параметр.
Передается в виде массива:
"Transitions": [{ "Days": "<количество_дней>", "StorageClass": "<класс_хранилища>" }]
Чтобы задать параметр
Transitions
, в файле конфигурации должен быть задан параметрPrefix
. При этом значениеPrefix
может быть пустым (""
). -
Expiration
— параметр правила для удаления любых объектов. Необязательный параметр. Может содержать:Date
— дата, после которой объект будет удален. Формат — ISO 8601 , напримерYYYY-MM-DD
. Время — всегда 00:00 UTC. КлючDate
нельзя использовать одновременно с ключомDays
. Необязательный параметр.Days
— количество дней с момента создания объекта, после которого объект будет удален. Минимальное значение —1
. КлючDays
нельзя использовать одновременно с ключомDate
. Необязательный параметр.ExpiredObjectDeleteMarker
— удаляет маркер удаления, для которого больше не существует неактуальных версий объекта. Принимает значенияtrue
илиfalse
. Необязательный параметр.
-
NoncurrentVersionTransitions
— параметр правила для изменения класса хранилища неактивных версий объектов со стандартного (STANDARD
) на холодное (COLD
,STANDARD_IA
) или ледяное (ICE
) и с холодного на ледяное. Необязательный параметр. Может содержать:NoncurrentDays
— количество дней до изменения класса хранилища неактивной версий объекта. Минимальное значение —1
. Обязательный параметр.StorageClass
— класс хранилища, в который будет перенесен объект. Может бытьCOLD
,STANDARD_IA
илиICE
. Обязательный параметр.
Чтобы задать параметр
NoncurrentVersionTransitions
, в файле конфигурации должен быть задан параметрPrefix
. При этом значениеPrefix
может быть пустым (""
). -
NoncurrentVersionExpiration
— параметр правила для удаления неактивных версий объектов. Необязательный параметр.Правило содержит обязательный параметр
NoncurrentDays
— количество дней до удаления неактивной версий объекта. Минимальное значение —1
. -
AbortIncompleteMultipartUpload
— параметр правила для удаления всех частей составных загрузок, не завершенных за указанное количество дней. Необязательный параметр.Правило содержит обязательный параметр
DaysAfterInitiation
— количество дней с начала загрузки. Минимальное значение —1
.
Укажите хотя бы один из параметров
Transitions
,Expiration
,NoncurrentVersionTransition
,NoncurrentVersionExpiration
илиAbortIncompleteMultipartUpload
.Сохраните готовую конфигурацию в файле, например
lifecycles.json
. -
-
Загрузите конфигурацию в бакет, например, в
backup-bucket
:aws s3api put-bucket-lifecycle-configuration \ --bucket backup-bucket \ --endpoint-url=https://storage.yandexcloud.net \ --lifecycle-configuration file://lifecycles.json
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
provider "yandex" { cloud_id = "<идентификатор_облака>" folder_id = "<идентификатор_каталога>" zone = "<зона_доступности>" token = "<OAuth-токен>" } resource "yandex_iam_service_account" "sa" { name = "<имя_сервисного_аккаунта>" } // Назначение роли сервисному аккаунту resource "yandex_resourcemanager_folder_iam_member" "sa-admin" { folder_id = "<идентификатор_каталога>" role = "storage.admin" member = "serviceAccount:${yandex_iam_service_account.sa.id}" } // Создание статического ключа доступа resource "yandex_iam_service_account_static_access_key" "sa-static-key" { service_account_id = yandex_iam_service_account.sa.id description = "static access key for object storage" } resource "yandex_storage_bucket" "bucket" { bucket = "<имя_бакета>" acl = "private" access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key lifecycle_rule { id = "log" enabled = true filter { tag { key = "some_key" value = "some_value" } } transition { days = 30 storage_class = "COLD" } expiration { days = 90 } } lifecycle_rule { id = "backup" enabled = true filter { and { prefix = "backup/" tags = { key1 = "value1" key2 = "value2" } } } expiration { date = "2020-12-21" } } } resource "yandex_storage_bucket" "versioning_bucket" { bucket = "<имя_бакета>" acl = "private" access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key versioning { enabled = true } lifecycle_rule { enabled = true filter { prefix = "config/" } noncurrent_version_transition { days = 30 storage_class = "ICE" } noncurrent_version_expiration { days = 90 } } }
Где:
bucket
— имя бакета. Обязательный параметр.access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.
Параметры
lifecycle_rule
:-
id
— уникальный идентификатор правила. Должен быть меньше или равен 255 символам. Необязательный параметр. -
filter
— фильтр объектов. Необязательный параметр. Может содержать не более одного элемента каждого типа:-
prefix
— префикс ключа объекта, идентифицирующий один или несколько объектов, к которым применяется правило. Необязательный параметр. -
object_size_greater_than
— минимальный размер объекта в байтах. Под действие правила попадают объекты, размер которых больше или равен указанному. Необязательный параметр. -
object_size_less_than
— максимальный размер объекта в байтах. Под действие правила попадают объекты, размер которых меньше или равен указанному. Необязательный параметр. -
tag
— метка объекта. Необязательный параметр. Под действие правила попадают объекты, которым присвоена указанная метка. Передается в виде записи, содержащей две пары значений, например:tag { key = "some_key" value = "some_value" }
-
And
— логический оператор И (AND
) для фильтров. Необязательный параметр. Используйте этот фильтр, чтобы сочетать в одном правиле фильтрацию по префиксу, размеру или меткам объекта. С помощью логического оператораAnd
вы можете настроить фильтрацию одновременно по нескольким меткам. Для этого в блокеtags
передайте метки в виде парkey = value
.filter { and { prefix = "backup/" tags = { key1 = "value1" key2 = "value2" } object_size_greater_than = 1 object_size_less_than = 1024 } }
Если фильтр объектов не задан, под действие правила попадают все объекты в бакете.
-
-
enabled
— состояние правила. Обязательный параметр. -
abort_incomplete_multipart_upload_days
— параметр правила для удаления всех частей составных загрузок, не завершенных за указанное количество дней. Необязательный параметр. -
expiration
— параметр правила для удаления любых объектов. Необязательный параметр. -
transition
— параметр правила для изменения класса хранилища любых объектов со стандартного (STANDARD
) на холодное (COLD
,STANDARD_IA
) или ледяное (ICE
) и с холодного на ледяное. Необязательный параметр. -
noncurrent_version_expiration
— параметр правила для удаления неактивных версий объектов. Необязательный параметр. -
noncurrent_version_transition
— параметр правила для изменения класса хранилища неактивных версий объектов со стандартного (STANDARD
) на холодное (COLD
,STANDARD_IA
) или ледяное (ICE
) и с холодного на ледяное. Необязательный параметр.
Необходимо указать хотя бы один из параметров
abort_incomplete_multipart_upload_days
,expiration
,transition
,noncurrent_version_expiration
,noncurrent_version_transition
.Параметры
expiration
:date
— дата, после которой вы хотите, чтобы действие вступило в силу. Параметрdate
нельзя использовать одновременно с параметромdays
. Необязательный параметр.days
— количество дней после создания объекта, когда действие правила вступает в силу. Минимальное значение —1
. Параметрdays
нельзя использовать одновременно с параметромdate
. Необязательный параметр.expired_object_delete_marker
— удаляет маркер удаления, для которого больше не существует неактуальных версий объекта. Принимает значенияtrue
илиfalse
. Необязательный параметр.
Параметры
transition
:date
— дата, после которой вы хотите, чтобы действие вступило в силу. Параметрdate
нельзя использовать одновременно с параметромdays
. Необязательный параметр.days
— количество дней после создания объекта, когда действие правила вступает в силу. Минимальное значение — 1. Параметрdays
нельзя использовать одновременно с параметромdate
. Необязательный параметр.storage_class
— класс хранилища, в который будет перенесен объект. Может бытьCOLD
,STANDARD_IA
илиICE
. Обязательный параметр.
Параметры
noncurrent_version_expiration
:days
— количество дней истечения срока действия. Минимальное значение — 1. Обязательный параметр.
Параметры
noncurrent_version_transition
:days
— количество дней до перехода. Минимальное значение — 1. Обязательный параметр.storage_class
— класс хранилища, в который будет перенесен объект. Может бытьCOLD
,STANDARD_IA
илиICE
. Обязательный параметр.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Чтобы управлять жизненными циклами объектов в бакете, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.
Если вы используете S3 API, задайте конфигурацию жизненного цикла в формате XML.