Trigger for Yandex IoT Core that sends messages to a Serverless Containers container
A trigger for Yandex IoT Core manages messages exchanged between devices, registries, and brokers. This trigger is created for topics: it receives copies of messages from topics and sends those to a Serverless Containers container for processing.
The trigger must be in the same cloud as the device, registry, or broker whose topic it reads messages from.
You can create a trigger:
- For a standard topic implemented by the service except for the
$monitoring/<device_ID>/jsontopic. - For a topic with any subtopics and wildcards.
- For an alias topic.
A trigger for Yandex IoT Core needs a service account to invoke the container.
For more information about creating a trigger for Yandex IoT Core, see Creating a trigger that will send messages to a container in Serverless Containers from a Yandex IoT Core registry or device topic and Creating a trigger that will send messages to a container in Serverless Containers from a Yandex IoT Core broker topic.
Message batching
Batching settings allow you to send multiple messages to a container at the same time. They set a top limit on the message batch size and accumulation time. For example, if the message batch size is 3, the container can receive batches of one to three messages.
Roles required for the proper operation of a trigger for Yandex IoT Core
- To create a trigger, you need a permission for the service account under which the trigger runs the operation. This permission comes with the iam.serviceAccounts.user and editor roles or higher.
- To use a trigger, the service account needs the
serverless.containers.invokerrole for the folder with the container the trigger will invoke.
Learn more about access management here.
Yandex IoT Core trigger message format
Before copying a message to a container, the trigger converts the copy to the below format.
Device
{
"messages": [
{
"event_metadata": {
"event_id": "2153b5d2-c6af-4c69-a28d-74ce********",
"event_type": "yandex.cloud.events.iot.IoTMessage",
"created_at": "2019-09-25T15:51:17.872320525Z"
},
"details": {
"registry_id": "arenou2oj4ct********",
"device_id": "areqjd6un3af********",
"mqtt_topic": "$devices/areqjd6un3af********/events",
"payload": "VGVz****"
}
},
{
"event_metadata": {
"event_id": "2153b5d2-c6af-4c69-a28d-74ce********",
"event_type": "yandex.cloud.events.iot.IoTMessage",
"created_at": "2019-09-25T15:51:17.872320525Z"
},
"details": {
"registry_id": "arenou2oj4ct********",
"device_id": "areqjd6un3af********",
"mqtt_topic": "$devices/areqjd6un3af********/events",
"payload": "VGVz****"
}
}
]
}
Broker
{
"messages":[
{
"event_metadata":{
"event_id":"2153b5d2-c6af-4c69-a28d-74ce********",
"event_type":"yandex.cloud.events.iot.IoTMessage",
"created_at":"2019-09-25T15:51:17.872320525Z"
},
"details":{
"broker_id":"arenou2oj4ct********",
"mqtt_topic":"broker/topic",
"payload":"VGVz****"
}
},
{
"event_metadata":{
"event_id":"2153b5d2-c6af-4c69-a28d-74ce********",
"event_type":"yandex.cloud.events.iot.IoTMessage",
"created_at":"2019-09-25T15:51:17.872320525Z"
},
"details":{
"broker_id":"arenou2oj4ct********",
"mqtt_topic":"broker/topic",
"payload":"VGVz****"
}
}
]
}