CreateTopicRule - AWS IoT


Creates a rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule.

Request Syntax

POST /rules/ruleName HTTP/1.1 x-amz-tagging: tags Content-type: application/json { "topicRulePayload": { "actions": [ { "cloudwatchAlarm": { "alarmName": "string", "roleArn": "string", "stateReason": "string", "stateValue": "string" }, "cloudwatchLogs": { "logGroupName": "string", "roleArn": "string" }, "cloudwatchMetric": { "metricName": "string", "metricNamespace": "string", "metricTimestamp": "string", "metricUnit": "string", "metricValue": "string", "roleArn": "string" }, "dynamoDB": { "hashKeyField": "string", "hashKeyType": "string", "hashKeyValue": "string", "operation": "string", "payloadField": "string", "rangeKeyField": "string", "rangeKeyType": "string", "rangeKeyValue": "string", "roleArn": "string", "tableName": "string" }, "dynamoDBv2": { "putItem": { "tableName": "string" }, "roleArn": "string" }, "elasticsearch": { "endpoint": "string", "id": "string", "index": "string", "roleArn": "string", "type": "string" }, "firehose": { "deliveryStreamName": "string", "roleArn": "string", "separator": "string" }, "http": { "auth": { "sigv4": { "roleArn": "string", "serviceName": "string", "signingRegion": "string" } }, "confirmationUrl": "string", "headers": [ { "key": "string", "value": "string" } ], "url": "string" }, "iotAnalytics": { "channelArn": "string", "channelName": "string", "roleArn": "string" }, "iotEvents": { "inputName": "string", "messageId": "string", "roleArn": "string" }, "iotSiteWise": { "putAssetPropertyValueEntries": [ { "assetId": "string", "entryId": "string", "propertyAlias": "string", "propertyId": "string", "propertyValues": [ { "quality": "string", "timestamp": { "offsetInNanos": "string", "timeInSeconds": "string" }, "value": { "booleanValue": "string", "doubleValue": "string", "integerValue": "string", "stringValue": "string" } } ] } ], "roleArn": "string" }, "kinesis": { "partitionKey": "string", "roleArn": "string", "streamName": "string" }, "lambda": { "functionArn": "string" }, "republish": { "qos": number, "roleArn": "string", "topic": "string" }, "s3": { "bucketName": "string", "cannedAcl": "string", "key": "string", "roleArn": "string" }, "salesforce": { "token": "string", "url": "string" }, "sns": { "messageFormat": "string", "roleArn": "string", "targetArn": "string" }, "sqs": { "queueUrl": "string", "roleArn": "string", "useBase64": boolean }, "stepFunctions": { "executionNamePrefix": "string", "roleArn": "string", "stateMachineName": "string" } } ], "awsIotSqlVersion": "string", "description": "string", "errorAction": { "cloudwatchAlarm": { "alarmName": "string", "roleArn": "string", "stateReason": "string", "stateValue": "string" }, "cloudwatchLogs": { "logGroupName": "string", "roleArn": "string" }, "cloudwatchMetric": { "metricName": "string", "metricNamespace": "string", "metricTimestamp": "string", "metricUnit": "string", "metricValue": "string", "roleArn": "string" }, "dynamoDB": { "hashKeyField": "string", "hashKeyType": "string", "hashKeyValue": "string", "operation": "string", "payloadField": "string", "rangeKeyField": "string", "rangeKeyType": "string", "rangeKeyValue": "string", "roleArn": "string", "tableName": "string" }, "dynamoDBv2": { "putItem": { "tableName": "string" }, "roleArn": "string" }, "elasticsearch": { "endpoint": "string", "id": "string", "index": "string", "roleArn": "string", "type": "string" }, "firehose": { "deliveryStreamName": "string", "roleArn": "string", "separator": "string" }, "http": { "auth": { "sigv4": { "roleArn": "string", "serviceName": "string", "signingRegion": "string" } }, "confirmationUrl": "string", "headers": [ { "key": "string", "value": "string" } ], "url": "string" }, "iotAnalytics": { "channelArn": "string", "channelName": "string", "roleArn": "string" }, "iotEvents": { "inputName": "string", "messageId": "string", "roleArn": "string" }, "iotSiteWise": { "putAssetPropertyValueEntries": [ { "assetId": "string", "entryId": "string", "propertyAlias": "string", "propertyId": "string", "propertyValues": [ { "quality": "string", "timestamp": { "offsetInNanos": "string", "timeInSeconds": "string" }, "value": { "booleanValue": "string", "doubleValue": "string", "integerValue": "string", "stringValue": "string" } } ] } ], "roleArn": "string" }, "kinesis": { "partitionKey": "string", "roleArn": "string", "streamName": "string" }, "lambda": { "functionArn": "string" }, "republish": { "qos": number, "roleArn": "string", "topic": "string" }, "s3": { "bucketName": "string", "cannedAcl": "string", "key": "string", "roleArn": "string" }, "salesforce": { "token": "string", "url": "string" }, "sns": { "messageFormat": "string", "roleArn": "string", "targetArn": "string" }, "sqs": { "queueUrl": "string", "roleArn": "string", "useBase64": boolean }, "stepFunctions": { "executionNamePrefix": "string", "roleArn": "string", "stateMachineName": "string" } }, "ruleDisabled": boolean, "sql": "string" } }

URI Request Parameters

The request uses the following URI parameters.


The name of the rule.

Length Constraints: Minimum length of 1. Maximum length of 128.

Pattern: ^[a-zA-Z0-9_]+$

Required: Yes


Metadata which can be used to manage the topic rule.


For URI Request parameters use format: ...key1=value1&key2=value2...

For the CLI command-line parameter use format: --tags "key1=value1&key2=value2..."

For the cli-input-json file use format: "tags": "key1=value1&key2=value2..."

Request Body

The request accepts the following data in JSON format.


The rule payload.

Type: TopicRulePayload object

Required: Yes

Response Syntax

HTTP/1.1 200

Response Elements

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.



A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.

HTTP Status Code: 409


An unexpected error has occurred.

HTTP Status Code: 500


The request is not valid.

HTTP Status Code: 400


The resource already exists.

HTTP Status Code: 409


The service is temporarily unavailable.

HTTP Status Code: 503


The Rule-SQL expression can't be parsed correctly.

HTTP Status Code: 400

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: