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

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

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

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

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

Чтобы настроить интеграцию Forms и DataLens через консоль управления:

  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).

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

Создайте сервисный аккаунтСоздайте сервисный аккаунт

Консоль управления
  1. В консоли управления выберите нужный каталог.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта: forms-integration-sa.
  5. Нажмите кнопку Добавить роль и выберите роли:
    • lockbox.payloadViewer — для чтения секретов Yandex Lockbox.
    • functions.functionInvoker — для вызова функции Cloud Functions.
    • storage.editor — для чтения и записи данных в бакет Object Storage.
    • yq.viewer и yq.invoker — для интеграции DataLens и Query.
  6. Нажмите кнопку Создать.

Создайте бакет Object StorageСоздайте бакет Object Storage

В бакете Object Storage будут сохраняться данные из Forms.

Консоль управления
  1. В консоли управления выберите нужный каталог.
  2. В списке сервисов выберите Object Storage.
  3. Нажмите кнопку Создать бакет.
  4. Введите Имя бакета.
  5. Нажмите кнопку Создать бакет.

Назначьте сервисному аккаунту права доступа на бакетНазначьте сервисному аккаунту права доступа на бакет

Консоль управления
  1. В консоли управления выберите нужный каталог.

  2. В списке сервисов выберите Object Storage.

  3. Откройте созданный ранее бакет.

  4. Перейдите в раздел Объекты.

  5. Нажмите на кнопку и выберите Настроить ACL.

  6. В открывшемся окне Редактирование ACL:

    1. Начните вводить имя сервисного аккаунта forms-integration и выберите его из выпадающего списка.
    2. Выберите права доступа READ и WRITE .
    3. Нажмите кнопку Добавить.
    4. Нажмите кнопку Сохранить.

Создайте статический ключ для сервисного аккаунтаСоздайте статический ключ для сервисного аккаунта

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

Создайте секрет Yandex Lockbox для статического ключаСоздайте секрет Yandex Lockbox для статического ключа

Консоль управления
  1. В консоли управления выберите нужный каталог.
  2. В списке сервисов выберите Lockbox.
  3. Нажмите кнопку Создать секрет.
  4. Введите Имя секрета — static-key.
  5. В блоке Данные секрета:
    1. Выберите Тип секрета — Пользовательский.
    2. Создайте следующие пары ключ-значение:
      • Идентификатор статического ключа:

        • Ключ — static-key-id.
        • Значение — выберите Текст и введите идентификатор статического ключа, созданного ранее.
      • Значение статического ключа:

        • Ключ — static-key-value.
        • Значение — выберите Текст и введите значение статического ключа, созданного ранее.

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

Консоль управления
  1. В консоли управления выберите нужный каталог.

  2. В списке сервисов выберите Cloud Functions.

  3. Создайте функцию:

    1. Нажмите кнопку Создать функцию в правом верхнем углу.
    2. Введите Имя функции — forms-function.
    3. Нажмите кнопку Создать.
  4. Создайте версию функции:

    1. В открывшемся окне Редактор выберите среду исполнения — Python.

    2. Отключите опцию Добавить файлы с примерами кода.

    3. Нажмите кнопку Продолжить.

    4. Выберите Способ создания функции — Редактор кода.

    5. В окне редактора функции нажмите кнопку Создать файл.

    6. В открывшемся окне введите Имя файла — forms-integration.py и нажмите кнопку Создать.

    7. Вставьте в созданный файл forms-integration.py код функции:

      import boto3
      import os
      import json
      from botocore.config import Config
      
      def get_answers(raw_answers: json) -> json:
          result = {}
          for name, value in raw_answers.get('answer').get('data').items():
              if name.startswith('answer_choices_'):
                  choices = []
                  for c in value.get('value'):
                      choices.append(c.get('text'))
                  result[name] = ','.join(choices)
              else:
                  result[name] = value.get('value')
          return result
      
      def handler(event, context):
          headers = event.get('headers')
          form_id = headers.get('X-Form-Id')
          answer_id = headers.get('X-Form-Answer-Id')
      
          body_json = json.loads(event.get('body'))
          answers_json = get_answers(body_json)
      
          aws_access_key_id = os.environ['KEY']
          aws_secret_access_key = os.environ['SECRET_KEY']
          bucket_name = os.environ['BUCKET']
      
          s3 = boto3.client(service_name='s3',
                            aws_access_key_id=aws_access_key_id,aws_secret_access_key=aws_secret_access_key,
                            endpoint_url='https://storage.yandexcloud.net', region_name='ru-central1',
                            config=Config(request_checksum_calculation="when_required"))
      
          s3.put_object(Bucket=bucket_name, Key=f"{form_id}/{answer_id}.json", Body=json.dumps(answers_json))
      
          return {
              'statusCode': 200,
              'body': "OK",
              'headers': {
                  'Content-Type': 'text/plain',
              }
          }
      
      
    8. В окне редактора функции нажмите кнопку Создать файл.

    9. В открывшемся окне введите Имя файла — requirements.txt и нажмите кнопку Создать.

    10. Укажите в созданном файле requirements.txt библиотеку boto3 для работы с Object Storage из функции:

      boto3
      
    11. В поле Точка входа укажите forms-integration.handler.

    12. В поле Сервисный аккаунт выберите созданный ранее аккаунт forms-integration-sa.

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

      1. Ключ — BUCKET.
      2. Значение — имя созданного ранее бакета.
    14. В блоке Секреты Lockbox:

      1. Создайте переменную KEY для идентификатора статического ключа со следующими параметрами:

        • Переменная окружения — KEY.
        • Идентификатор секрета — выберите секрет static-key-id.
        • Идентификатор версии — выберите версию с пометкой latest.
        • Ключ секрета — выберите static-key-id.
      2. Создайте переменную SECRET_KEY для идентификатора статического ключа со следующими параметрами:

        • Переменная окружения — SECRET_KEY.
        • Идентификатор секрета — выберите секрет static-key-value.
        • Идентификатор версии — выберите версию с пометкой latest.
        • Ключ секрета — выберите static-key-value.
    15. После создания функции на вкладке Обзор включите опцию Публичная функция.

Создайте и настройте форму 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. Чарт DataLens.
  2. Датасет DataLens.
  3. Подключение DataLens.
  4. Привязку Query.
  5. Соединение Query.
  6. Функцию Cloud Functions.
  7. Секрет Yandex Lockbox.
  8. Бакеты Object Storage.

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

Предыдущая
Обзор
Следующая
Terraform
Проект Яндекса
© 2025 ООО «Яндекс.Облако»