Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Все практические руководства
    • Создание навыка Алисы
    • Развертывание веб-приложения
    • Разработка навыка Алисы и сайта с авторизацией
    • Запись данных с устройства в базу данных
    • Запись логов балансировщика в PostgreSQL
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Подключение к базе данных YDB из функции на Python
    • Подключение к базе данных YDB из функции на Node.js
    • Конвертация видео в GIF на Python
    • Создание функции Node.js с помощью TypeScript
    • Разработка пользовательской интеграции
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Запуск вычислений по расписанию в DataSphere
    • Интерактивная отладка функций
    • Регулярное асинхронное распознавание аудиофайлов из Object Storage
    • Канареечный релиз функции Cloud Functions
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Загрузка данных из Яндекс Директ в витрину Yandex Managed Service for ClickHouse® с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
    • Эмуляция множества IoT-устройств
    • Передача событий Yandex Cloud Postbox в Yandex Data Streams и их анализ с помощью Yandex DataLens
    • Сокращатель ссылок
    • Yandex Tracker: экспорт и визуализация данных
    • Запуск вычислений в DataSphere с помощью API
    • Разработка Telegram-бота для распознавания текста и аудио
    • Настройка реагирования в Yandex Cloud Logging и Cloud Functions
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

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

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте необходимые ресурсы Yandex IoT Core
  • Создайте реестр
  • Создайте устройство
  • Подключите устройство к MQTT-брокеру
  • Подготовьте базу данных
  • Создайте кластер
  • Подключитесь к кластеру
  • Создайте таблицу
  • Создайте функцию для обработки данных
  • Создайте версию функции
  • Создайте триггер для Yandex IoT Core
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Запись данных с устройства в базу данных

Запись данных с устройства в базу данных

Статья создана
Yandex Cloud
Обновлена 11 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте необходимые ресурсы Yandex IoT Core
    • Создайте реестр
    • Создайте устройство
  • Подключите устройство к MQTT-брокеру
  • Подготовьте базу данных
    • Создайте кластер
    • Подключитесь к кластеру
    • Создайте таблицу
  • Создайте функцию для обработки данных
    • Создайте версию функции
  • Создайте триггер для Yandex IoT Core
  • Как удалить созданные ресурсы

В данном руководстве вы организуете запись данных с устройства в базу данных. В качестве примера будет использоваться кластер Yandex Managed Service for PostgreSQL. Чтобы подключить устройство к Yandex IoT Core, вам понадобится MQTT-брокер. Все шаги выполняются в консоли управления.

Чтобы начать записывать информацию с устройства в базу данных:

  1. Подготовьте облако к работе.
  2. Создайте сервисный аккаунт.
  3. Создайте необходимые ресурсы Yandex IoT Core.
    1. Создайте реестр.
    2. Создайте устройство.
  4. Подключите устройство к MQTT-брокеру.
  5. Подготовьте базу данных.
    1. Создайте кластер.
    2. Подключитесь к кластеру.
    3. Создайте таблицу.
  6. Создайте функцию для обработки данных.
  7. Создайте триггер для Yandex IoT Core.

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

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

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

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

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

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

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

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

  • плата за кластер БД PostgreSQL (см. тарифы Yandex Managed Service for PostgreSQL);
  • плата за обмен сообщениями между ресурсами Yandex IoT Core (см. тарифы Yandex IoT Core);
  • плата за вызовы функций и вычислительные ресурсы для их выполнения (см. тарифы Yandex Cloud Functions).

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

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта: my-db-function-service-account.
  5. Нажмите кнопку Добавить роль и выберите роли functions.functionInvoker и editor.
  6. Нажмите кнопку Создать.

Создайте необходимые ресурсы Yandex IoT CoreСоздайте необходимые ресурсы Yandex IoT Core

Примечание

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

Создайте реестрСоздайте реестр

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

  2. В списке сервисов выберите IoT Core.

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

  4. В поле Имя введите my-registry.

  5. Введите пароль.

    • Длина — не менее 14 символов.
    • Должен содержать букву верхнего регистра, букву нижнего регистра и цифру.

    Важно

    Сохраните пароль, так как прочитать его из Yandex IoT Core будет невозможно.

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

Создайте устройствоСоздайте устройство

Консоль управления

После создания реестра вы попадете в его настройки.

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

  2. Нажмите кнопку Добавить устройство.

  3. В поле Имя введите my-device.

  4. Введите пароль.

    • Длина — не менее 14 символов.
    • Должен содержать букву верхнего регистра, букву нижнего регистра и цифру.

    Важно

    Сохраните пароль, так как прочитать его из Yandex IoT Core будет невозможно.

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

Подключите устройство к MQTT-брокеруПодключите устройство к MQTT-брокеру

Для подключения к MQTT-серверу используйте следующие параметры:

  • Сертификат удостоверяющего центра.
  • Адрес сервера: mqtt.cloud.yandex.net.
  • Порт сервера: 8883.
  • Протокол: TLSv1.2.

Подготовьте базу данныхПодготовьте базу данных

Создайте кластерСоздайте кластер

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать кластер БД.

  2. В списке сервисов выберите Managed Service for PostgreSQL.

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

  4. В поле Имя кластера введите my-pg-database.

  5. В поле Окружение выберите PRODUCTION.

  6. В поле Версия выберите 12.

  7. В блоке Класс хоста:

    • Укажите платформу Intel Cascade Lake.
    • Выберите тип burstable.
    • Укажите класс b2.medium.

    Важно

    Класс b2.medium был выбран только в рамках тестирования. В реальных проектах использовать хосты с гарантированной долей vCPU ниже 100% не рекомендуется.

  8. В блоке Размер хранилища:

    • Выберите network-ssd.
    • Укажите размер равным 10 ГБ.

    Примечание

    Тип и размер диска следует выбирать в соответствии с решаемыми задачами. Значения, указанные выше, используются для тестирования.

  9. В блоке База данных укажите атрибуты БД:

    • Имя базы данных. Имя БД должно быть уникальным в рамках каталога и содержать только латинские буквы, цифры и подчеркивания.
    • Имя пользователя — владельца БД. Имя пользователя должно содержать только латинские буквы, цифры и подчеркивания.
    • Пароль пользователя. Длина — от 8 до 128 символов.

    Для базы данных, которая создается вместе с кластером, устанавливаются настройки набора символов (кодировки) LC_CTYPE=C и LC_COLLATE=C. После создания эти настройки изменить нельзя, но вы можете создать новую базу с нужными настройками.

  10. В блоке Хосты нажмите и включите опцию Публичный доступ.

  11. В блоке Дополнительные настройки включите опцию Доступ из консоли управления.

  12. Нажмите кнопку Создать кластер.

Подробнее о создании кластера — в разделе Как создать кластер PostgreSQL.

В дальнейшем настройки кластера можно будет изменить.

Подключитесь к кластеруПодключитесь к кластеру

После создания кластера вы автоматически будете перенаправлены на страницу Кластеры.

Дождитесь, пока статус кластера изменится на Alive.

Консоль управления
  1. Выберите кластер my-pg-database.
  2. Перейдите на вкладку SQL.
  3. В поле Имя пользователя БД укажите имя пользователя, который владеет БД, созданной на предыдущем шаге.
  4. В поле Пароль введите пароль, указанный при создании кластера.
  5. Нажмите кнопку Подключиться.

Создайте таблицуСоздайте таблицу

В качестве примера источника данных в сценарии используется датчик воздуха, который измеряет следующие параметры:

  • Влажность.
  • Уровень содержания углекислого газа (CO2).
  • Давление.
  • Температура.

Датчик выдает результат в формате JSON. Например:

{
"DeviceId":"0e3ce1d0-1504-4325-972f-55c9********",
"TimeStamp":"2020-05-21T22:53:16Z",
"Values":[
    {"Type":"Float","Name":"Humidity","Value":"25.281837"},
    {"Type":"Float","Name":"CarbonDioxide","Value":"67.96608"},
    {"Type":"Float","Name":"Pressure","Value":"110.7021"},
    {"Type":"Float","Name":"Temperature","Value":"127.708824"}
    ]
}

Запишите полученную информацию в таблицу базы данных с помощью функции.

После того, как вы подключились к кластеру, создайте таблицу. Для этого:

Консоль управления
  1. В окне редактирования введите следующий запрос:

    Важно

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

    CREATE TABLE iot_events (
        event_id varchar(24) not null,
        device_id varchar(50) not null,
        event_datetime timestamptz not null,
        humidity float8 null,
        carbon_dioxide float8 null,
        pressure float8 null,
        temperature float8 null
    )
    
  2. Нажмите кнопку Выполнить.

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

Создайте функцию для обработки данныхСоздайте функцию для обработки данных

Функция будет получать сообщения из MQTT-брокера и записывать данные в таблицу, созданную на предыдущем шаге.

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать функцию.
  2. В списке сервисов выберите Cloud Functions.
  3. Нажмите кнопку Создать функцию.
  4. Введите имя функции.
  5. Нажмите кнопку Создать.

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

После создания функции вы автоматически будете перенаправлены на страницу Редактор.

Консоль управления
  1. В блоке Код функции:

    • В поле Среда выполнения выберите python37.
    • В поле Способ оставьте значение по умолчанию: Редактор кода.
  2. Создайте файл myfunction.py.

  3. В области редактирования файла вставьте код функции, размещенный на Github.

    Примечание

    Запрос, который используется для записи данных в БД, формируется в методе makeInsertStatement. Если необходимо убрать или добавить параметры, внесите изменения в этот метод.

  4. В поле Точка входа укажите myfunction.msgHandler.

  5. Задайте следующие параметры версии:

    • Таймаут — 10.
    • Память — 128 МБ.
  6. В поле Сервисный аккаунт выберите my-db-function-service-account.

  7. Добавьте переменные окружения:

    • VERBOSE_LOG — параметр, отвечающий за вывод подробной информации о выполнении функции. Введите значение True.
    • DB_HOSTNAME — имя хоста БД PostgreSQL для подключения.
    • DB_PORT — порт для подключения.
    • DB_NAME — имя базы данных для подключения.
    • DB_USER — имя пользователя для подключения.
    • DB_PASSWORD — пароль, который был введен при создании кластера.

    Чтобы определить значения параметров для подключения:

    1. В консоли управления выберите каталог, в котором вы создали кластер.
    2. В списке сервисов выберите Managed Service for PostgreSQL.
    3. Выберите кластер my-pg-database.
    4. В строке с нужной БД нажмите значок и выберите Подключиться.
    5. На вкладке PowerShell найдите пример строки подключения.
    6. Перенесите значения переменных host, port, dbname и user в соответствующее поле Значение переменных окружения функции.
  8. Нажмите кнопку Сохранить изменения.

Создайте триггер для Yandex IoT CoreСоздайте триггер для Yandex IoT Core

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

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

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

  3. На панели слева выберите Триггеры.

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

  5. В блоке Базовые параметры:

    • В поле Имя введите имя триггера.
    • В поле Описание введите описание триггера.
    • В поле Тип выберите IoT Core (устройство).
  6. В блоке Настройки сообщений IoT Core:

    • В поле Реестр введите my-registry.

    • В поле Устройство введите my-device.

    • В поле MQTT-топик укажите топик, в который устройство отправляет данные:

      $devices/<идентификатор_устройства>/events
      

      Где <идентификатор_устройства> — идентификатор вашего устройства.

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

  7. В блоке Настройки функции:

    • Выберите функцию для обработки данных, созданную ранее.
    • В поле Тег версии функции укажите $latest.
    • В поле Сервисный аккаунт укажите my-db-function-service-account.
  8. Остальные поля оставьте пустыми или заполните по своему усмотрению.

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

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы:

  1. Удалите устройство.
  2. Удалите реестр.
  3. Удалите кластер PostgreSQL.
  4. Удалите триггер.
  5. Удалите функцию.

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

Предыдущая
Разработка навыка Алисы и сайта с авторизацией
Следующая
Запись логов балансировщика в PostgreSQL
Проект Яндекса
© 2025 ООО «Яндекс.Облако»