Загрузка данных из Yandex Managed Service for OpenSearch в Yandex Object Storage с помощью Yandex Data Transfer
С помощью сервиса Data Transfer вы можете перенести данные из кластера Managed Service for OpenSearch в объектное хранилище Object Storage.
Чтобы перенести данные:
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте кластер Managed Service for OpenSearch любой подходящей конфигурации с хостами в публичном доступе.
-
Если вы используете группы безопасности в кластере, убедитесь, что они настроены правильно и допускают подключение к кластеру Managed Service for OpenSearch.
-
Получите SSL-сертификат для подключения к кластеру Managed Service for OpenSearch.
-
Создайте сервисный аккаунт с ролью
storage.editor
. Трансфер будет использовать его для доступа к бакету.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации opensearch-to-object-storage.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности для подключения к кластеру Managed Service for OpenSearch;
- сервисный аккаунт с ролью
storage.editor
; - кластер Managed Service for OpenSearch;
- бакет-приемник Object Storage;
- эндпоинты;
- трансфер.
-
Укажите в файле
opensearch-to-object-storage.tf
параметры:-
folder_id
— идентификатор каталога; -
mos_version
— версия OpenSearch; -
mos_password
— пароль пользователя-владельца кластера OpenSearch; -
bucket_name
— имя бакета в соответствии с правилами именования. -
profile_name
— имя вашего профиля в YC CLI.Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Подключитесь к кластеру-источнику Managed Service for OpenSearch.
-
Создайте тестовый индекс
people
и задайте его схему:curl --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people' && \ curl --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_mapping?pretty' \ --data' { "properties": { "name": {"type": "text"}, "age": {"type": "integer"} } } '
-
Наполните тестовый индекс данными:
curl --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request POST 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_doc/?pretty' \ --data' { "name" : "Alice", "age" : "30" } ' && \ curl --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request POST 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_doc/?pretty' \ --data' { "name" : "Robert", "age" : "32" } '
-
(Опционально) Проверьте данные в тестовом индексе:
curl --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request GET 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/people/_search?pretty'
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для приемника типа
Object Storage
со следующими настройками:- Бакет —
<имя_созданного_ранее_бакета>
- Сервисный аккаунт —
<имя_созданного_ранее_сервисного_аккаунта>
. - Выходной формат —
JSON
. - Формат сжатия —
[object Object]
. - Имя папки —
from_MOS
.
- Бакет —
-
Создайте эндпоинт для источника типа
OpenSearch
со следующими настройками:- Тип подключения —
Кластер Managed Service for OpenSearch
. - Кластер Managed Service for OpenSearch — выберите кластер Managed Service for OpenSearch из списка.
- Пользователь —
admin
. - Пароль —
<пароль_пользователя>
.
- Тип подключения —
-
Создайте трансфер:
ВручнуюTerraform-
Создайте трансфер типа Копирование, использующий созданные эндпоинты.
-
Укажите в файле
opensearch-to-object-storage.tf
значения переменных:target_endpoint_id
— значение идентификатора эндпоинта для приемника;source_endpoint_id
— значение идентификатора эндпоинта для источника;transfer_enabled
— значение1
для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
-
Проверьте работоспособность трансфера
Убедитесь, что данные перенеслись из кластера Managed Service for OpenSearch в бакет Object Storage:
- Дождитесь перехода трансфера в статус Завершен.
- В консоли управления
выберите каталог, в котором находится нужный бакет. - В списке сервисов выберите Object Storage.
- Выберите бакет из списка.
- Перейдите на вкладку Объекты.
- Проверьте, что бакет Object Storage содержит папку
from_MOS
с файлом JSON с тестовыми данными.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите трансфер.
- Удалите эндпоинты.
- Удалите из созданного бакета папку
from_MOS
.
Остальные ресурсы удалите в зависимости от способа их создания:
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-