Настройка доступа к Object Storage из кластера OpenSearch
Managed Service for OpenSearch поддерживает работу с Yandex Object Storage в качестве репозитория снапшотов OpenSearch. Это позволяет использовать Object Storage для хранения резервных копий. Подробнее о репозитории снапшотов см. в документации OpenSearch
Для доступа к данным в бакете Object Storage из кластера:
Перед началом работы убедитесь, что вашему аккаунту в Yandex Cloud назначена роль iam.serviceAccounts.user или выше. Она нужна в следующих случаях:
- если вы создаете или изменяете кластер и привязываете к нему сервисный аккаунт;
- если вы восстанавливаете из резервной копии кластер с привязкой к сервисному аккаунту.
Подключите сервисный аккаунт к кластеру
-
При создании или изменении кластера выберите существующий сервисный аккаунт, либо создайте новый.
-
Убедитесь, что этому аккаунту назначена роль
storage.editor
.
Настройте права доступа
-
В консоли управления
выберите каталог, в котором хранится нужный бакет. Если бакета не существует — создайте его. -
Выберите сервис Object Storage.
-
Выберите вкладку Бакеты.
-
Настройте ACL бакета:
- В выпадающем списке Выберите пользователя укажите сервисный аккаунт, подключенный к кластеру.
- Задайте разрешения
READ и WRITE
для выбранного сервисного аккаунта. - Нажмите кнопки Добавить и Сохранить.
Подключите репозиторий снапшотов
Внимание
Если бакет зарегистрирован в кластере OpenSearch как репозиторий снапшотов, не изменяйте содержимое бакета вручную — это нарушит работу механизма снапшотов OpenSearch.
-
Установите плагин
repository-s3
. -
Подключитесь к кластеру.
-
Зарегистрируйте бакет как репозиторий снапшотов, используя публичный API OpenSearch
:PUT --cacert ~/.opensearch/root.crt https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/_snapshot/<имя_репозитория>
В параметрах запроса укажите бакет, связанный с сервисным аккаунтом кластера:
curl --request PUT \ "https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/_snapshot/<имя_репозитория>" \ --cacert ~/.opensearch/root.crt \ --header "Content-Type: application/json" \ --data '{ "type": "s3", "settings": { "endpoint": "storage.yandexcloud.net", "bucket": "<имя_бакета>" } }'