Соединение с S3-совместимыми объектными хранилищами
Команды выгрузки и загрузки из S3-совместимых хранилищ export s3
и import s3
используют одинаковые параметры для соединения с S3 и аутентификации. О том, как узнать эти параметры для некоторых облачных поставщиков, описано в разделе Получение параметров соединения с S3 ниже.
Соединение
Соединение с S3 требует указания эндпоинта и бакета:
--s3-endpoint HOST
: Эндпоинт S3. HOST
- валидное имя хоста, например storage.yandexcloud.net
--bucket STR
: Бакет S3. STR
- строка, содержащая имя бакета
Аутентификация
Для успешного соединения, кроме случая загрузки из публично доступного бакета, потребуется аутентифицироваться под учетной записью, для которой разрешена запись (для выгрузки) или чтение (для загрузки) из данного бакета.
Для аутентификации в S3 необходимы два параметра:
- Идентификатор ключа доступа (access_key_id).
- Секретный ключ доступа (secret_access_key).
YDB CLI определяет значения этих параметров из следующих источников (в порядке убывания приоритета):
- Командной строки.
- Переменных окружения.
- Файла
~/.aws/credentials
.
Параметры командной строки
--access-key
— идентификатор ключа доступа.--secret-key
— секретный ключ доступа.--aws-profile
— имя профиля в файле~/.aws/credentials
. Значение по умолчаниюdefault
.
Переменные окружения
Если какой-либо параметр аутентификации не указан в командной строке, YDB CLI пробует его получить из следующих переменных окружения:
AWS_ACCESS_KEY_ID
— идентификатор ключа доступа.AWS_SECRET_ACCESS_KEY
— секретный ключ доступа.AWS_PROFILE
— имя профиля в файле~/.aws/credentials
.
Файл аутентификации AWS
Если какой-либо параметр аутентификации не указан в командной строке и его не удалось получить из переменной окружения, YDB CLI пробует его получить из указанного профиля или профиля по умолчанию в файле ~/.aws/credentials
, применяемого для аутентификации AWS CLI. Данный файл может быть создан командой AWS CLI aws configure
.
Получение параметров соединения с S3
Yandex.Cloud
Ниже описан сценарий получения ключей доступа к Yandex.Cloud Object Storage с применением Yandex.Cloud CLI.
-
Установите и сконфигурируйте Yandex.Cloud CLI.
-
Получите ID вашего каталога в облаке следующей командой, его понадобится указывать в командах ниже:
yc config list
В выводе идентификатор каталога в облаке находится в строке
folder-id:
:folder-id: b2ge70qdcff4bo9q6t19
-
Создайте сервисный аккаунт, выполнив следующую команду:
yc iam service-account create --name s3account
Вы можете указать любое имя аккаунта кроме
s3account
или использовать существующий, тогда вам понадобится его также заменять при копировании команд ниже через буфер обмена. -
Назначьте сервисному аккаунту роли в соответствии с необходимым уровнем доступа к S3, выполнив команду:
Чтение (для загрузки в базу данных YDB)Запись (для выгрузки из базы данных YDB)yc resource-manager folder add-access-binding <folder-id> \ --role storage.viewer --subject serviceAccount:s3account
yc resource-manager folder add-access-binding <folder-id> \ --role storage.editor --subject serviceAccount:s3account
, где
<folder-id>
- это идентификатор каталога в облаке, полученный на шаге 2.Вы можете также ознакомиться с полным перечнем ролей Yandex.Cloud.
-
Получите статические ключи доступа, выполнив следующую команду:
yc iam access-key create --service-account-name s3account
Успешно исполненная команда выведет информацию об атрибутах access_key и значение secret:
access_key: id: aje6t3vsbj8lp9r4vk2u service_account_id: ajepg0mjt06siuj65usm created_at: "2018-11-22T14:37:51Z" key_id: 0n8X6WY6S24N7OjXQ0YQ secret: JyTRFdqw8t1kh2-OJNz4JX5ZTz9Dj1rI9hxtzMP1
В данном выводе:
access_key.key_id
- это идентификатор ключа доступаsecret
- это секретный ключ доступа