Trigger for Yandex IoT Core that sends messages to the Cloud Functions function
A trigger for Yandex IoT Core manages messages exchanged between devices, registries, and brokers. You create this trigger for topics: it receives copies of messages from topics and sends those to the Cloud Functions function 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>/json
topic. - For a topic with any subtopics and wildcards.
- For an alias topic.
A trigger for Yandex IoT Core needs a service account to call the function.
For more information about creating a trigger for Yandex IoT Core, see Creating a trigger that transmits messages to a Cloud Functions function from an Yandex IoT Core registry or device topic and Creating a trigger that transmits messages to a Cloud Functions function from an Yandex IoT Core broker topic.
Batching
Batching settings allow you to send multiple messages to a function at the same time. They set a top limit on the size of a message group and its accumulation time. For example, if the size of a message group is 3, the function can receive groups that contain from 1 to 3 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 executes the operation. This permission comes with the iam.serviceAccounts.user and editor roles or higher.
- For the trigger to fire, the service account needs the
functions.functionInvoker
role for the folder containing the function called by the trigger.
Read more about access management.
Yandex IoT Core trigger message format
Before the message is copied to a function, the trigger converts it to the format below.
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****"
}
}
]
}