Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Построение пайплайна CI/CD в GitLab
    • Работа с API-шлюзом по протоколу WebSocket
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Визуализация логов в Grafana с помощью плагина Cloud Logging
    • Канареечный релиз функции Cloud Functions
    • Интерактивная отладка функций Cloud Functions
    • Создание функции Node.js с помощью TypeScript
    • Запуск контейнерного приложения в Serverless Containers
    • Передача событий Yandex Cloud Postbox в Data Streams и их анализ с помощью DataLens
    • Использование API Gateway для настройки синтеза речи в SpeechKit
    • Подключение к YDB из функции Cloud Functions на Python
    • Подключение к базе данных YDB из функции Cloud Functions на Node.js
    • Защита API Gateway при помощи Smart Web Security
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows
    • Настройка реагирования в Cloud Logging и Yandex Cloud Functions
    • Настройка интеграций Workflows с Tracker, YandexGPT и Yandex Cloud Postbox
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers
      • Обзор
      • Консоль управления
      • Terraform

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте и настройте функцию Cloud Functions
  • Создайте и настройте форму Forms
  • Создайте API-ключ
  • Создайте форму
  • Настройте интеграцию с функцией Cloud Functions
  • Проверьте работу созданной интеграции
  • Настройте подключение и привязку к данным в сервисе Query
  • Настройте получение данных в DataLens
  • Протестируйте интеграцию созданных ресурсов
  • Удалите созданные ресурсы
  1. Бессерверные технологии
  2. Поставка данных из Yandex Forms в Yandex DataLens с использованием Yandex Cloud Functions и Yandex Query
  3. Terraform

Поставка данных из Yandex Forms в Yandex DataLens с использованием Yandex Cloud Functions и Yandex Query при помощи Terraform

Статья создана
Yandex Cloud
Улучшена
kvendingoldo
Обновлена 14 марта 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте и настройте функцию Cloud Functions
  • Создайте и настройте форму Forms
    • Создайте API-ключ
    • Создайте форму
    • Настройте интеграцию с функцией Cloud Functions
    • Проверьте работу созданной интеграции
  • Настройте подключение и привязку к данным в сервисе Query
  • Настройте получение данных в DataLens
  • Протестируйте интеграцию созданных ресурсов
  • Удалите созданные ресурсы

Чтобы настроить интеграцию Forms и DataLens при помощи Terraform:

  1. Подготовьте инфраструктуру.
  2. Создайте и настройте функцию Yandex Cloud Functions.
  3. Создайте и настройте форму в Forms.
  4. Настройте подключение и привязку к данным в сервисе Yandex Query.
  5. Настройте получение данных в DataLens.
  6. Протестируйте интеграцию созданных ресурсов.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за использование бакета Yandex Object Storage (см. тарифы Object Storage);
  • плата за хранение и запросы секретов Yandex Lockbox (см. тарифы Yandex Lockbox);
  • плата за вызовы функций и вычислительные ресурсы, выделенные для выполнения функций (см. тарифы Cloud Functions);
  • плата за объем считанных из источников данных при исполнении запросов Query (см. тарифы Query);
  • плата за использование DataLens в соответствии с тарифным планом (см. тарифы DataLens).

Подготовьте инфраструктуруПодготовьте инфраструктуру

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Чтобы подготовить инфраструктуру при помощи Terraform:

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации forms-and-datalens-integration.tf.

    В этом файле описаны:

    • Сеть и подсеть, в которых будет создаваться инфраструктура для функции Cloud Functions.
    • Сервисный аккаунт со следующими ролями:
      • lockbox.payloadViewer — для чтения секретов Yandex Lockbox;
      • functions.functionInvoker — для вызова функции Cloud Functions;
      • storage.admin — для чтения и записи данных в бакет Object Storage, а также управления ACL бакета;
      • yq.viewer и yq.invoker — для интеграции DataLens и Query.
    • Статический ключ сервисного аккаунта, который используется для создания бакета Object Storage.
    • Статический ключ сервисного аккаунта, который используется для создания функции Cloud Functions.
    • Секрет Yandex Lockbox для хранения данных о статическом ключе сервисного аккаунта для функции Cloud Functions.
    • Информационный ресурс data для секрета Yandex Lockbox, из которого функция Cloud Functions получает идентификатор версии секрета.
    • Бакет Object Storage для результатов работы функции.
    • Функция Cloud Functions с публичным доступом.
  6. В блоке с локальными переменными файла forms-and-datalens-integration.tf укажите:

    • идентификатор вашего каталога в переменной sa_folder_id;
    • имя бакета Object Storage в переменной bucket-name.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Создайте и настройте функцию Cloud FunctionsСоздайте и настройте функцию Cloud Functions

  1. Скачайте в директорию с файлом forms-and-datalens-integration.tf архив с кодом функции.

  2. В блоке локальных переменных файла forms-and-datalens-integration.tf укажите значения:

    • content_path = function.zip.
    • create-function = 1.
  3. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Создайте и настройте форму FormsСоздайте и настройте форму Forms

Создайте API-ключСоздайте API-ключ

API-ключ нужен для настройки интеграции с Forms.

Консоль управления
  1. В консоли управления выберите нужный каталог.
  2. В списке сервисов выберите Identity and Access Management.
  3. Выберите сервисный аккаунт forms-integration.
  4. Перейдите в раздел Обзор.
  5. Нажмите кнопку Создать новый ключ и выберите Создать API-ключ.
  6. Нажмите кнопку Создать.
  7. В открывшемся окне Новый ключ отобразятся Идентификатор ключа и Ваш секретный ключ. Сохраните их — они понадобятся в дальнейшем.

Создайте формуСоздайте форму

Интерфейс Forms
  1. Перейдите в сервис Forms.

  2. Нажмите кнопку Создать форму.

  3. Добавьте в форму хотя бы два любых поля и настройте произвольные вопросы в них.

  4. Нажмите кнопку Опубликовать.

  5. Сохраните ссылку на опубликованную форму — она понадобится позднее.

Настройте интеграцию с функцией Cloud FunctionsНастройте интеграцию с функцией Cloud Functions

Интерфейс Forms
  1. Перейдите в сервис Forms.

  2. Откройте созданную ранее форму.

  3. Перейдите на вкладку Настройки.

  4. Откройте раздел Дополнительно.

  5. В блоке Ключ для запуска облачных функций введите данные созданного ранее API-ключа и нажмите кнопку Сохранить.

  6. Откройте вкладку Интеграции.

  7. Нажмите кнопку Cloud Functions, чтобы добавить условие для интеграции.

  8. В поле Код функции введите идентификатор функции Cloud Functions. Вы можете скопировать идентификатор в разделе Обзор функции Cloud Functions в консоли управления.

  9. В поле Показывать сообщение о результате действия выберите Показывать.

  10. Нажмите кнопку Сохранить.

Проверьте работу созданной интеграцииПроверьте работу созданной интеграции

  1. Перейдите по публичной ссылке созданной ранее формы.

  2. Заполните форму и нажмите кнопку Отправить.

  3. Перейдите в сервис Forms.

  4. Откройте созданную ранее форму.

  5. Откройте вкладку Интеграции.

  6. Перейдите на страницу Выполненные интеграции.

  7. Откройте запись о выполненном действии и убедитесь, что в разделе Ответ получен HTTP-ответ 200 — ОК.

  8. Перейдите в консоль управления и откройте созданный ранее бакет. Убедитесь, что в нем появился JSON-файл с данными из заполненной формы.

    Название папки, в которой будет расположен файл, соответствует внутреннему идентификатору формы. Сохраните этот идентификатор — он понадобится для следующих шагов.

    Все последующие результаты заполнения формы будут сохраняться в этой папке.

  9. Заполните форму еще несколько раз, причем одно из полей заполните одинаково хотя бы в двух формах. В дальнейшем это увеличит наглядность при тестировании интеграции.

Настройте подключение и привязку к данным в сервисе QueryНастройте подключение и привязку к данным в сервисе Query

Интерфейс Query
  1. Перейдите в консоль управления и откройте сервис Query.
  2. На вкладке Соединения нажмите кнопку Создать.
  3. Создайте соединение со следующими параметрами:
    • Имя — forms-connection.
    • Тип — Object Storage.
    • Бакет — имя созданного ранее бакета.
    • Сервисный аккаунт — forms-integration-sa.
  4. В открывшемся окне задайте параметры привязки к данным:
    • Тип — Object Storage.
    • Соединение — forms-connection.
    • Путь — /<идентификатор_формы>/.
      Вы можете скопировать идентификатор:
      • В разделе Объекты бакета Object Storage. Название папки, в которой расположен файл с результатами заполнения формы, соответствует ее идентификатору.
      • В адресной строке интерфейса Forms на странице просмотра или редактирования формы.
    • Формат — json_each-row.
    • Колонки — создайте колонки для полей, которые вы задали в форме.
      Чтобы Query определил колонки самостоятельно, нажмите кнопку Автоопределить колонки.

Настройте получение данных в DataLensНастройте получение данных в DataLens

Интерфейс DataLens
  1. Перейдите в сервис DataLens.
  2. На панели слева выберите Подключения и нажмите кнопку Создать подключение.
  3. Выберите сервис Query и задайте в открывшемся окне следующие параметры:
    • Облако и каталог — выберите облако и каталог, в котором вы создали остальные ресурсы.
    • Сервисный аккаунт — forms-integration-sa.
  4. Нажмите кнопку Сохранить изменения и в открывшемся окне задайте имя подключения — forms-datalens-connection, затем нажмите кнопку Создать.
  5. Вернитесь на главную страницу сервиса DataLens и нажмите кнопку Создать датасет.
  6. На панели подключений нажмите Добавить и выберите подключение forms-datalens-connection.
  7. В блоке Таблицы выберите нужную таблицу и перетащите ее в рабочую область DataLens.
    После загрузки данные из таблицы появятся на панели Предпросмотр.
  8. Нажмите кнопку Сохранить и введите имя датасета — forms-integration-dataset, затем нажмите кнопку Создать.

Протестируйте интеграцию созданных ресурсовПротестируйте интеграцию созданных ресурсов

Чтобы проверить совместную работу созданных ресурсов, откройте датасет forms-integration-dataset и нажмите кнопку Создать чарт. В открывшемся окне создайте произвольный чарт с данными, полученными из формы. Для большей наглядности постройте чарт по тому полю, в котором есть повторяющиеся значения.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать.

  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Консоль управления
Следующая
Все руководства
Проект Яндекса
© 2025 ООО «Яндекс.Облако»