Создание бакета
Чтобы создать бакет, у вас должна быть минимальная роль storage.editor
на каталог.
- В консоли управления
выберите каталог, в котором хотите создать бакет. - Выберите сервис Object Storage.
- Нажмите кнопку Создать бакет.
- На странице создания бакета:
-
Введите имя бакета в соответствии с правилами именования.
По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.
-
При необходимости ограничьте максимальный размер бакета.
Размер
0
означает отсутствие ограничений и аналогичен включенной опции Без ограничения. -
Задайте параметры публичного доступа на чтение объектов в бакете, получение списка объектов и чтение настроек бакета:
Ограниченный
— доступ только для авторизованных пользователей Yandex Cloud.Публичный
— доступ для любых пользователей.
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
-
Выберите класс хранилища по умолчанию:
Стандартное
.Холодное
.Ледяное
.
Более
холодные
классы предназначены для длительного хранения объектов, работать с которыми планируется реже. Чемхолоднее
хранилище, тем дешевле хранить в нем данные, но тем дороже их читать и записывать. -
При необходимости добавьте метки:
- Нажмите кнопку Добавить метку.
- Введите метку в формате
ключ: значение
. - Нажмите Enter.
-
Нажмите кнопку Создать бакет для завершения операции.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания бакета:
yc storage bucket create --help
-
Создайте бакет в каталоге по умолчанию:
yc storage bucket create --name <имя_бакета>
Где
--name
— имя бакета. Обязательный параметр. Подробнее см. Правила именования бакетов.По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.
Результат:
name: example folder_id: b1gmit33ngp6******** anonymous_access_flags: read: false list: false default_storage_class: STANDARD versioning: VERSIONING_DISABLED max_size: "53687091200" acl: {} created_at: "2022-12-16T14:05:12.196007Z"
Опциональные параметры-
--default-storage-class
— класс хранилища. Доступные значения:standard
— стандартное хранилище. Устанавливается по умолчанию.cold
— холодное хранилище.ice
— ледяное хранилище.
Более
холодные
классы предназначены для длительного хранения объектов, работать с которыми планируется реже. Чемхолоднее
хранилище, тем дешевле хранить в нем данные, но тем дороже их читать и записывать. -
--max-size
— максимальный размер бакета в байтах. Значение по умолчанию —0
(без ограничений). -
Параметры для включения публичного доступа к бакету:
--public-read
— включить публичный доступ на чтение объектов в бакете.--public-list
— включить публичный доступ на просмотр списка объектов в бакете.--public-config-read
— включить публичный доступ на чтение настроек в бакете.
По умолчанию публичный доступ к бакету выключен.
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
-
Параметры для настройки ACL бакета:
-
--acl
— предопределенный ACL. Список возможных значений см. в разделе Предопределенные ACL. Нельзя использовать одновременно с параметром--grants
. -
--grants
— настройки разрешений для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Нельзя использовать одновременно с параметром--acl
. Значение параметра указывается в формате:grant-type=<тип_получателя_разрешения>,grantee-id=<идентификатор_получателя>,permission=<тип_разрешения>
, где:grant-type
— тип получателя разрешения. Возможные значения:grant-type-account
— пользователь, сервисный аккаунт или группа пользователей;grant-type-all-authenticated-users
— публичная группа всех аутентифицированных пользователей Yandex Cloud;grant-type-all-users
— публичная группа всех пользователей интернета.
grantee-id
— идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение. Указывается, только еслиgrant-type=grant-type-account
.permission
— тип разрешения ACL. Возможные значения:permission-full-control
,permission-write
,permission-read
. Подробнее о разрешениях см. в разделе Виды разрешений.
Чтобы настроить несколько разрешений, укажите параметр
--grants
несколько раз.
По умолчанию для каждого нового бакета создается пустой ACL.
-
Подробнее о команде
yc storage bucket create
см. в Справочнике YC CLI. -
Если у вас еще нет интерфейса командной строки AWS CLI, установите и сконфигурируйте его.
Чтобы создать бакет, назначьте сервисному аккаунту, через который работает AWS CLI, роль storage.editor
.
В терминале выполните команду:
aws s3api create-bucket \
--endpoint-url=https://storage.yandexcloud.net \
--bucket <имя_бакета>
Где:
--endpoint-url
— эндпоинт Object Storage.--bucket
— имя бакета.
Примечание
По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage. Подробнее см. Правила именования бакетов.
Результат:
{
"Location": "/<имя_бакета>"
}
Будет создан бакет со следующими параметрами:
- без ограничения максимального размера;
- с ограниченным доступом на чтение объектов, к списку объектов и на чтение настроек;
- с классом хранилища
Стандартное
.
Вы можете применить к бакету предопределенный ACL или настроить разрешения для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Эти настройки несовместимы: у бакета должен быть либо предопределенный ACL, либо набор отдельных разрешений.
Примечание
Предопределенный ACL
aws s3api create-bucket \
--endpoint-url=https://storage.yandexcloud.net \
--bucket <имя_бакета> \
--acl <предопределенный_ACL>
Где --acl
— предопределенный ACL. Список значений см. в разделе Предопределенные ACL.
Отдельные разрешения
aws s3api create-bucket \
--endpoint-url=https://storage.yandexcloud.net \
--bucket <имя_бакета> \
<тип_разрешения> <получатель_разрешения>
Где:
-
Возможные типы разрешений ACL:
--grant-read
— доступ к списку объектов в бакете, чтению различных настроек бакета (жизненный цикл, CORS, статический хостинг), чтению всех объектов в бакете.--grant-write
— доступ к записи, перезаписи и удалению объектов в бакете. Используется только совместно с--grant-read
.--grant-full-control
— полный доступ к бакету и объектам в нем.
Вы можете задать несколько разрешений в одной команде.
-
Возможные получатели разрешений:
id=<идентификатор_получателя>
— идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение.uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers
— публичная группа всех аутентифицированных пользователей Yandex Cloud.uri=http://acs.amazonaws.com/groups/global/AllUsers
— публичная группа всех пользователей интернета.
По умолчанию для каждого нового бакета создается пустой ACL.
Подробнее о команде aws s3api create-bucket
см. в документации AWS
Примечание
Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin
, на каталог, в котором будут создаваться ресурсы.
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
terraform { required_providers { yandex = { source = "yandex-cloud/yandex" } } required_version = ">= 0.13" } // Настройка провайдера provider "yandex" { token = "<IAM-_или_OAuth-токен>" cloud_id = "<идентификатор_облака>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } // Создание сервисного аккаунта 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" "test" { 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 bucket = "<имя_бакета>" max_size = <максимальный_размер_бакета> default_storage_class = "<класс_хранилища>" anonymous_access_flags { read = <true|false> list = <true|false> config_read = <true|false> } tags = { <ключ_1> = "<значение_1>" <ключ_2> = "<значение_2>" ... <ключ_n> = "<значение_n>" } }
Где:
-
yandex_iam_service_account
— описание сервисного аккаунта, который создаст бакет и будет работать с ним:-
name
— имя сервисного аккаунта. -
bucket
— имя бакета.По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.
-
max_size
— максимальный размер бакета в байтах. -
default_storage_class
— класс хранилища. Доступные значения:standard
— стандартное хранилище.cold
— холодное хранилище.ice
— ледяное хранилище.
Более
холодные
классы предназначены для длительного хранения объектов, работать с которыми планируется реже. Чемхолоднее
хранилище, тем дешевле хранить в нем данные, но тем дороже их читать и записывать. -
anonymous_access_flags
— настройки доступа:read
— публичный доступ на чтение объектов в бакете.list
— публичный доступ на просмотр списка объектов в бакете.config_read
— публичный доступ на чтение настроек в бакете.
-
tags
— метки бакета в форматеключ = "значение"
.
-
name
— обязательный параметр. Остальные параметры необязательны. По умолчанию значение параметраmax-size
—0
, публичный доступ к бакету выключен, класс хранилища —standard
.Более подробную информацию о параметрах ресурса
yandex_storage_bucket
в Terraform, см. в документации провайдера . -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
Чтобы создать бакет, воспользуйтесь методом REST API create для ресурса Bucket, вызовом gRPC API BucketService/Create или методом S3 API create.