Amazon IoT Events - Amazon IoT Core
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Amazon IoT Events

The Amazon IoT Events (iotEvents) action sends data from an MQTT message to an Amazon IoT Events input.


If the payload is sent to Amazon IoT Core without the Input attribute Key, or if the key isn't in the same JSON path specified in the key, it will cause the IoT rule to fail with the error Failed to send message to Iot Events.


This rule action has the following requirements:

  • An IAM role that Amazon IoT can assume to perform the iotevents:BatchPutMessage operation. For more information, see Granting an Amazon IoT rule the access it requires.

    In the Amazon IoT console, you can choose or create a role to allow Amazon IoT to perform this rule action.


When you create an Amazon IoT rule with this action, you must specify the following information:


(Optional) Whether to process the event actions as a batch. The default value is false.

When batchMode is true and the rule SQL statement evaluates to an Array, each Array element is treated as a separate message when it's sent to Amazon IoT Events by calling BatchPutMessage. The resulting array can't have more than 10 messages.

When batchMode is true, you can't specify a messageId.

Supports substitution templates: No


The name of the Amazon IoT Events input.

Supports substitution templates: API and Amazon CLI only


(Optional) Use this to verify that only one input (message) with a given messageId is processed by an Amazon IoT Events detector. You can use the ${newuuid()} substitution template to generate a unique ID for each request.

When batchMode is true, you can't specify a messageId--a new UUID value will be assigned.

Supports substitution templates: Yes


The IAM role that allows Amazon IoT to send an input to an Amazon IoT Events detector. For more information, see Requirements.

Supports substitution templates: No


The following JSON example defines an IoT Events action in an Amazon IoT rule.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotEvents": { "inputName": "MyIoTEventsInput", "messageId": "${newuuid()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_events" } } ] } }

See also