Поставка данных из очереди в Yandex Object Storage с помощью Yandex Data Transfer
Важно
Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.
С помощью сервиса Data Transfer вы можете перенести данные из потока Data Streams в бакет Yandex Object Storage:
- Подготовьте поток данных Data Streams.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-yds-obj.tf
.В этом файле описаны:
- база данных Managed Service for YDB;
- сервисный аккаунт с ролями
yds.editor
,storage.editor
иstorage.uploader
; - бакет в Object Storage;
- трансфер.
-
Укажите в файле
data-transfer-yds-obj.tf
:folder_id
— идентификатор каталога, в котором будут созданы ресурсы.sa_name
— имя сервисного аккаунта для создания бакета и использования в эндпоинтах.source_db_name
— имя базы данных Managed Service for YDB.bucket_name
— имя бакета в Object Storage.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте поток данных Data Streams
-
Отправьте в поток тестовые данные. В качестве сообщения используйте данные от сенсоров автомобиля в формате JSON:
{
"device_id":"iv9a94th6rzt********",
"datetime":"2020-06-05T17:27:00",
"latitude":"55.70329032",
"longitude":"37.65472196",
"altitude":"427.5",
"speed":"0",
"battery_voltage":"23.5",
"cabin_temperature":"17",
"fuel_level":null
}
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для источника:
-
Тип базы данных —
Yandex Data Streams
. -
Параметры эндпоинта:
-
Настройки подключения:
- База данных — выберите базу данных Managed Service for YDB из списка.
- Поток — укажите имя потока Data Streams.
- Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
yds.editor
.
-
Расширенные настройки:
-
Правила конвертации —
JSON
. -
Схема данных —
JSON-спецификация
:Создайте и загрузите файл схемы данных в формате JSON
json_schema.json
:json_schema.json
[ { "name": "device_id", "type": "string" }, { "name": "datetime", "type": "datetime" }, { "name": "latitude", "type": "double" }, { "name": "longitude", "type": "double" }, { "name": "altitude", "type": "double" }, { "name": "speed", "type": "double" }, { "name": "battery_voltage", "type": "any" }, { "name": "cabin_temperature", "type": "double" }, { "name": "fuel_level", "type": "any" } ]
-
-
-
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
Object Storage
. -
Параметры эндпоинта:
-
Настройки подключения:
- Бакет — укажите имя бакета в Object Storage.
- Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
storage.uploader
.
-
Выходной формат — выберите
JSON
илиCSV
, если в расширенных настройках эндпоинта источника включили опцию Правила конвертации.
-
-
-
Создайте трансфер:
ВручнуюTerraform- Создайте трансфер типа Репликация, использующий созданные эндпоинты.
- Активируйте его.
-
Раскомментируйте в файле
data-transfer-yds-obj.tf
:-
переменные:
source_endpoint_id
и задайте ей значение идентификатора эндпоинта для источника;target_endpoint_id
и задайте ей значение идентификатора эндпоинта для приемника;
-
ресурс
yandex_datatransfer_transfer
.
-
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Убедитесь, что данные из потока Data Streams перенеслись в бакет Object Storage:
- В консоли управления
выберите каталог, в котором находится бакет. - В списке сервисов выберите Object Storage.
- Выберите бакет из списка.
- Проверьте, что бакет содержит файл
<имя_потока>_0.raw
(.json
или.csv
, в зависимости от выбранного выходного формата) с тестовыми данными.
- В консоли управления
-
Отправьте в поток Data Streams новое сообщение:
{ "device_id": "rhibbh3y08qm********", "datetime": "2020-06-06 09:49:54", "latitude": 55.71294467, "longitude": 37.66542005, "altitude": 429.13, "speed": 55.5, "battery_voltage": null, "cabin_temperature": 18, "fuel_level": 32 }
-
Убедитесь, что в бакете Object Storage появились добавленные данные:
- В консоли управления
выберите каталог, в котором находится бакет. - В списке сервисов выберите Object Storage.
- Выберите бакет из списка.
- Проверьте, что в бакет добавился файл
<имя_потока>_0-1_1.raw
(.json
или.csv
, в зависимости от выбранного выходного формата) с новыми данными.
- В консоли управления
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите трансфер.
- Удалите эндпоинты для источника и приемника.
- Удалите объекты из бакета Object Storage.
Остальные ресурсы удалите в зависимости от способа их создания:
- Удалите базу данных Managed Service for YDB.
- Удалите бакет в Object Storage.
- Если при создании эндпоинтов вы создавали сервисные аккаунты, удалите их.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-