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 them 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 a topic alias.
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.
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****"
}
}
]
}