Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex IoT Core
    • Все инструкции
    • Отправка сообщения
    • Подписка устройства или реестра на получение сообщений
    • Экспорт сообщений в Data Streams
    • Просмотр журнала подключений
      • Реестр устройств
      • Брокер
    • Просмотр операций с ресурсами сервиса
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы

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

  • Перед началом работы
  • Создать триггер
  • Проверить результат
  • См. также
  1. Пошаговые инструкции
  2. Создание триггера для топика
  3. Реестр устройств

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

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Перед началом работы
  • Создать триггер
  • Проверить результат
  • См. также

Создайте триггер для топика устройства или реестра Yandex IoT Core и обрабатывайте копии сообщений с помощью функции Yandex Cloud Functions.

Важно

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

Перед началом работы

Для создания триггера вам понадобятся:

  • Функция, которую триггер будет вызывать. Если у вас нет функции:

    • Создайте функцию.
    • Создайте версию функции.
  • (Опционально) Очередь Dead Letter Queue, куда будут перенаправляться сообщения, которые не смогла обработать функция. Если у вас нет очереди, создайте ее.

  • Сервисные аккаунты с правами на вызов функции и (опционально) запись в очередь Dead Letter Queue. Вы можете использовать один и тот же сервисный аккаунт или разные. Если у вас нет сервисного аккаунта, создайте его.

  • Реестр или устройство, из топиков которых триггер будет принимать копии сообщений. Если у вас их нет:
    • Создайте реестр.
    • Создайте устройство.

Создать триггер

Примечание

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

Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите в каталог, в котором хотите создать триггер.

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

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

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

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

    • Введите имя и описание триггера.
    • В поле Тип выберите IoT Core (устройство).
    • В поле Запускаемый ресурс выберите Функция.
  6. В блоке Настройки сообщений IoT Core укажите реестр, устройство и MQTT-топик, для которого хотите создать триггер. Если вы создаете триггер для топика реестра, устройство и MQTT-топик можно не указывать. Если MQTT-топик не указан, триггер срабатывает для всех топиков реестра или устройства.

  7. В блоке Настройки группирования сообщений укажите:

    • Время ожидания, с. Допустимые значения от 1 до 60 секунд, значение по умолчанию — 1 секунда.
    • Размер группы. Допустимые значения от 1 до 100, значение по умолчанию — 1.

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

  8. В блоке Настройки функции выберите функцию и укажите:

    • Тег версии функции.
    • Сервисный аккаунт, от имени которого будет вызываться функция.
  9. (Опционально) В блоке Настройки повторных запросов:

    • В поле Интервал укажите время, через которое будет сделан повторный вызов функции, если текущий завершился неуспешно. Допустимые значения — от 10 до 60 секунд, значение по умолчанию — 10 секунд.
    • В поле Количество попыток укажите количество повторных вызовов функции, которые будут сделаны, прежде чем триггер отправит сообщение в Dead Letter Queue. Допустимые значения — от 1 до 5, значение по умолчанию — 1.
  10. (Опционально) В блоке Настройки Dead Letter Queue выберите очередь Dead Letter Queue и сервисный аккаунт с правами на запись в нее.

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

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

yc serverless trigger create internet-of-things \
  --name <имя_триггера> \
  --registry-id <идентификатор_реестра> \
  --device-id <идентификатор_устройства> \
  --mqtt-topic '<MQTT-топик>' \
  --batch-size <размер_группы_сообщений> \
  --batch-cutoff <максимальное_время_ожидания> \
  --invoke-function-id <идентификатор_функции> \
  --invoke-function-service-account-id <идентификатор_сервисного_аккаунта> \
  --retry-attempts <количество_повторных_вызовов> \
  --retry-interval <интервал_между_повторными_вызовами> \
  --dlq-queue-id <идентификатор_очереди_Dead_Letter_Queue> \
  --dlq-service-account-id <идентификатор_сервисного_аккаунта>

Где:

  • --name — имя триггера.
  • --registry-id — идентификатор реестра.
  • --device-id — идентификатор устройства. Если вы создаете триггер для топика реестра, этот параметр можно не указывать.
  • --mqtt-topic — MQTT-топик, для которого вы хотите создать триггер. Необязательный параметр. Если параметр не указан, триггер срабатывает для всех топиков реестра или устройства.
  • --batch-size — размер группы сообщений из MQTT-топиков. Необязательный параметр. Допустимые значения от 1 до 10, значение по умолчанию — 1.
  • --batch-cutoff — максимальное время ожидания. Необязательный параметр. Допустимые значения от 1 до 60 секунд, значение по умолчанию — 1 секунда. Триггер группирует сообщения не дольше batch-cutoff и отправляет их в функцию. Число сообщений при этом не превышает batch-size.
  • --invoke-function-id — идентификатор функции.
  • --invoke-function-service-account-id — идентификатор сервисного аккаунта с правами на вызов функции.
  • --retry-attempts — количество повторных вызовов, которые будут сделаны, прежде чем триггер отправит сообщение в Dead Letter Queue. Необязательный параметр. Допустимые значения — от 1 до 5, значение по умолчанию — 1.
  • --retry-interval — время, через которое будет сделан повторный вызов функции, если текущий завершился неуспешно. Необязательный параметр. Допустимые значения — от 10 до 60 секунд, значение по умолчанию — 10 секунд.
  • --dlq-queue-id — идентификатор очереди Dead Letter Queue. Необязательный параметр.
  • --dlq-service-account-id — идентификатор сервисного аккаунта с правами на запись в очередь Dead Letter Queue. Необязательный параметр.

Результат:

id: a1sl0mkmimfj********
folder_id: b1g88tflru0e********
created_at: "2019-09-25T13:54:35.654935Z"
name: iot-trigger
rule:
  iot_message:
    registry_id: arenou2oj4ct********
    device_id: areqjd6un3af********
    mqtt_topic: $devices/areqjd6un3af********/events
    batch_settings:
      size: "1"
      cutoff: 0s
    invoke_function:
      function_id: d4eofc7n0m03********
      function_tag: $latest
      service_account_id: aje3932acd0c********
      retry_settings:
        retry_attempts: "1"
        interval: 10s
status: ACTIVE

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

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

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

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Чтобы создать триггер для Yandex IoT Core:

  1. Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:

    resource "yandex_function_trigger" "my_trigger" {
      name        = "<имя_триггера>"
      description = "<описание_триггера>"
      function {
        id                 = "<идентификатор_функции>"
        service_account_id = "<идентификатор_сервисного_аккаунта>"
        retry_attempts     = "<количество_повторных_вызовов>"
        retry_interval     = "<интервал_между_повторными_вызовами>"
      }
      iot {
        registry_id  = "<идентификатор_реестра>"
        device_id    = "<идентификатор_устройства>"
        topic        = "<MQTT-топик>"
        batch_cutoff = "<максимальное_время_ожидания>"
        batch_size   = "<размер_группы_сообщений>"
      }
      dlq {
        queue_id           = "<идентификатор_очереди_Dead_Letter_Queue>"
        service_account_id = "<идентификатор_сервисного_аккаунта>"
      }
    }
    

    Где:

    • name — имя триггера. Формат имени:

      • длина — от 2 до 63 символов;
      • может содержать строчные буквы латинского алфавита, цифры и дефисы;
      • первый символ — буква, последний — не дефис.
    • description — описание триггера.

    • function — параметры функции:

      • id — идентификатор функции.
      • service_account_id — идентификатор сервисного аккаунта с правами на вызов функции.
      • retry_attempts — количество повторных вызовов, которые будут сделаны, прежде чем триггер отправит сообщение в Dead Letter Queue. Необязательный параметр. Допустимые значения — от 1 до 5, значение по умолчанию — 1.
      • retry_interval — время, через которое будет сделан повторный вызов функции, если текущий завершился неуспешно. Необязательный параметр. Допустимые значения — от 10 до 60 секунд, значение по умолчанию — 10 секунд.
    • iot — параметры триггера:

      • registry-id — идентификатор реестра.
      • device-id — идентификатор устройства. Если вы создаете триггер для топика реестра, этот параметр можно не указывать.
      • topic — MQTT-топик, для которого вы хотите создать триггер. Необязательный параметр. Если параметр не указан, триггер срабатывает для всех топиков реестра или устройства.
      • batch_cutoff — максимальное время ожидания. Необязательный параметр. Допустимые значения от 1 до 60 секунд, значение по умолчанию — 1 секунда. Триггер группирует сообщения не дольше batch-cutoff и отправляет их в функцию. Число сообщений при этом не превышает batch-size.
      • batch_size — размер группы сообщений из MQTT-топиков. Необязательный параметр. Допустимые значения от 1 до 10, значение по умолчанию — 1.
    • dlq — параметры очереди сообщений Dead Letter Queue:
      • queue_id — идентификатор очереди Dead Letter Queue. Необязательный параметр.
      • service_account_id — идентификатор сервисного аккаунта с правами на запись в очередь Dead Letter Queue. Необязательный параметр.

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

  2. Создайте ресурсы:

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

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

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

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

    Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления или с помощью команды CLI:

    yc serverless trigger list
    

Чтобы создать триггер для Yandex IoT Core, воспользуйтесь методом REST API create для ресурса Trigger или вызовом gRPC API TriggerService/Create.

Проверить результат

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

См. также

  • Создать триггер, который передает сообщения в контейнер Serverless Containers из топика реестра или устройства Yandex IoT Core
  • Создать триггер, который отправляет сообщения в WebSocket-соединения из топика реестра или устройства Yandex IoT Core

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

Предыдущая
Просмотр журнала подключений
Следующая
Брокер
Проект Яндекса
© 2025 ООО «Яндекс.Облако»