IoT Analytics - AWS IoT Core

IoT Analytics

The IoT Analytics (iotAnalytics) action sends data from an MQTT message to an AWS IoT Analytics channel.


This rule action has the following requirements:

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

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

    The policy attached to the role you specify should look like the following example.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotanalytics:BatchPutMessage", "Resource": [ "arn:aws:iotanalytics:us-west-2:account-id:channel/mychannel" ] } ] }


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


(Optional) Whether to process the action 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 delivered as a separate message when passed by BatchPutMessage to the AWS IoT Analytics channel. The resulting array can't have more than 100 messages.

Supports substitution templates: No


The name of the AWS IoT Analytics channel to which to write the data.

Supports substitution templates: API and AWS CLI only


The IAM role that allows access to the AWS IoT Analytics channel. For more information, see Requirements.

Supports substitution templates: No


The following JSON example defines an IoT Analytics action in an AWS IoT rule.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotAnalytics": { "channelName": "mychannel", "roleArn": "arn:aws:iam::123456789012:role/analyticsRole", } } ] } }

See also