Version-1.0
Изменения:
- Добавлена версия для публикации
Решение позволяет собрать данные из Yandex Direct в формате JSON, преобразовать в parquet на промежуточном хранилище object storage и затем загрузить в Clickhouse:
- Yandex Direct
- Yandex Cloud Functions
- Yandex Data Transfer
- Yandex Object Storage
- Yandex Managed Service for ClickHouse
- Yandex Virtual Private Cloud
- Yandex Identity and Access Management
- Yandex Lockbox
- ☑️ Разворачивает Yandex Object Storage, Yandex Managed Service for Clickhouse, эндпоинт для Yandex Data Transfer, Yandex Cloud functions, Lockbox, Yandex Virtual Private Cloud. Создает сервисный аккаунт
- ☑️ С помощью Yandex Cloud Functions отправляется запрос в Yandex Direct через python requests, результат преобразуется из JSON в Parquet и загружается в Yandex Object Storage
- ☑️ С помощью Yandex Data Transfer загружаются преобразованные данные из Yandex Object Storage в Yandex Managed Service for Clickhouse
-
Настройте аккаунт в яндекс директе и подготовьте токен, а также данные для выгрузки (можно через песочницу)
-
Создайте сервисный аккаунт (https://cloud.yandex.ru/docs/iam/quickstart-sa#create-sa)
-
Создайте авторизованный ключ для вашего сервисного аккаунта и запишите его в файл (https://cloud.yandex.ru/docs/iam/quickstart-sa#run-operation-from-sa, шаги 1 и 2)
-
Клонируйте себе данный репозиторий
-
Заполните variables.tf (folder_id, cloud_id, service_account_key_file, direct_token, path_to_zip_cf (здесь будет путь из п3 к zip архиву на локальной машине))
-
Выполните
$ terraform init
(если нужно установить terraform, то https://cloud.yandex.ru/docs/tutorials/infrastructure-management/terraform-quickstart#from-hashicorp-site) -
Выполните
$ terraform apply
и подождите, пока произойдет поднятие сервисов (если возникают ошибки - смотрите логи) -
Запустите выполнение Cloud Function (через тестирование - запустить тест). В object storage появится файл в формате parquet из полученного из Yandex Direct JSON
-
Cоздайте эндпоинт в Data Transfer для object storage:
- Bucket = возьмите из созданного object storage
- AWS_KEYS = возьмите из Lockbox
- endpoint = https://storage.yandexcloud.net
- zone = ru-central1
- схема: {"Id": "int64", "Name": "string"}
- таблица = возьмите название из созданного parquet файла (например, 6a1eed08da13444886d705231c213ced.snappy.parquet)
- результирующая схема: Id: Int64 Name: String
-
Создайте Data Transfer с использованием двух новых эндпоинтов (источник object storage, приемник clickhouse) - остальные настройки по умолчанию
-
Запустите Data Transfer (активировать)
-
Проверьте наличие новых данных в Clickhouse (https://cloud.yandex.ru/docs/managed-clickhouse/operations/connect)