Создание бакета
Чтобы создать бакет, у вас должна быть минимальная роль storage.editor на каталог.
-
В консоли управления
выберите каталог, в котором хотите создать бакет. -
Перейдите в сервис Object Storage.
-
На панели сверху нажмите Создать бакет.
-
На странице создания бакета:
-
Введите имя бакета в соответствии с правилами именования.
По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.
-
При необходимости добавьте метки:
- Нажмите Добавить метку.
- Введите метку в формате
ключ: значение. - Нажмите Enter.
-
При необходимости ограничьте максимальный размер бакета.
Размер
0означает отсутствие ограничений и аналогичен включенной опции Без ограничения. -
Задайте параметры публичного доступа на чтение объектов в бакете, получение списка объектов и чтение настроек бакета:
С авторизацией— доступ только для авторизованных пользователей Yandex Cloud.Для всех— доступ для любых пользователей.
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
-
Выберите класс хранилища по умолчанию:
СтандартноеХолодноеЛедяное
Более «холодные» классы предназначены для длительного хранения объектов, работать с которыми планируется реже. Чем «холоднее» хранилище, тем дешевле хранить в нем данные, но тем дороже их читать и записывать.
-
При необходимости включите шифрование: в поле Ключ KMS выберите симметричный ключ или создайте новый.
-
Нажмите Создать бакет для завершения операции.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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 распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
По умолчанию для аутентификации в Object Storage Terraform использует IAM-токен. Кроме IAM-токена для аутентификации в Object Storage можно использовать сервисный аккаунт и статические ключи доступа. Более подробную информацию об особенностях аутентификации Terraform в Object Storage см. в документации провайдера.
Создание бакета с использованием IAM-токена
-
Получите данные для аутентификации и добавьте их в переменные окружения.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
# Создание бакета с использованием IAM-токена resource "yandex_storage_bucket" "iam-bucket" { bucket = "<имя_бакета>" folder_id = "<идентификатор_каталога>" }Где:
-
bucket— имя бакета. Обязательный параметр.По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.
-
folder_id— идентификатор каталогаЕсли вы используете IAM-токен учетной записи пользователя, то в ресурсе
yandex_storage_bucketнеобходимо указывать идентификатор каталогаfolder_id.В случае использования IAM-токена сервисного аккаунта или статических ключей доступа,
folder_idуказывать необязательно — он потребуется только если вы хотите создать ресурс в каталоге, отличном от каталога сервисного аккаунта.
Более подробную информацию о параметрах ресурса
yandex_storage_bucketв Terraform, см. в документации провайдера. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
Создание бакета с использованием статического ключа
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
Создание бакета с использованием ключа
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— максимальный размер бакета в байтах. Значение по умолчанию —0, без ограничений. -
default_storage_class— класс хранилища. Доступные значения:standard— стандартное хранилище. Значение по умолчанию.cold— холодное хранилище.ice— ледяное хранилище.
Более
холодные
классы предназначены для длительного хранения объектов, работать с которыми планируется реже. Чемхолоднее
хранилище, тем дешевле хранить в нем данные, но тем дороже их читать и записывать. -
anonymous_access_flags— настройки доступа:read— публичный доступ на чтение объектов в бакете.list— публичный доступ на просмотр списка объектов в бакете.config_read— публичный доступ на чтение настроек в бакете. По умолчанию выключен.
-
tags— метки бакета в форматеключ = "значение".
-
Более подробную информацию о параметрах ресурса
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.