Управление версионированием бакета
Версионирование бакета — это возможность хранить историю объекта с помощью версий.
Примечание
Операция включения необратима: отключить версионирование нельзя, можно только приостановить создание новых версий. После приостановки версионирования новые объекты будут сохраняться с версией null
.
Включить версионирование бакета:
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для редактирования ACL бакета:
yc storage bucket update --help
-
Выполните следующую команду:
yc storage bucket update --name <имя_бакета> --versioning versioning-enabled
Результат:
name: my-bucket folder_id: csgeoelk7fl15******** default_storage_class: STANDARD versioning: VERSIONING_ENABLED max_size: "10737418240" acl: {} created_at: "2022-12-14T08:42:16.273717Z"
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
Выполните следующую команду:
aws --endpoint https://storage.yandexcloud.net \
s3api put-bucket-versioning \
--bucket <имя_бакета> \
--versioning-configuration 'Status=Enabled'
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
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" "b" {
bucket = "<имя_бакета>"
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
acl = "private"
versioning {
enabled = true
}
}
Где:
bucket
— имя бакета. Обязательный параметр.access_key
— идентификатор статического ключа доступа.secret_key
— значение секретного ключа доступа.acl
— применяемая политика ACL. Значение по умолчаниюprivate
. Необязательный параметр.versioning
— управление версионированием бакета:enabled
— включает версионирование бакета. Необязательный параметр.
Чтобы управлять версионированием бакета, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API putBucketVersioning.