CreateTopicRule
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.
Requires permission to access the CreateTopicRule action.
Request Syntax
POST /rules/ruleName HTTP/1.1
x-amz-tagging: tags
Content-type: application/json
{
   "actions": [ 
      { 
         "cloudwatchAlarm": { 
            "alarmName": "string",
            "roleArn": "string",
            "stateReason": "string",
            "stateValue": "string"
         },
         "cloudwatchLogs": { 
            "batchMode": boolean,
            "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": { 
            "batchMode": boolean,
            "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": { 
            "batchMode": boolean,
            "channelArn": "string",
            "channelName": "string",
            "roleArn": "string"
         },
         "iotEvents": { 
            "batchMode": boolean,
            "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"
         },
         "kafka": { 
            "clientProperties": { 
               "string" : "string" 
            },
            "destinationArn": "string",
            "headers": [ 
               { 
                  "key": "string",
                  "value": "string"
               }
            ],
            "key": "string",
            "partition": "string",
            "topic": "string"
         },
         "kinesis": { 
            "partitionKey": "string",
            "roleArn": "string",
            "streamName": "string"
         },
         "lambda": { 
            "functionArn": "string"
         },
         "location": { 
            "deviceId": "string",
            "latitude": "string",
            "longitude": "string",
            "roleArn": "string",
            "timestamp": { 
               "unit": "string",
               "value": "string"
            },
            "trackerName": "string"
         },
         "openSearch": { 
            "endpoint": "string",
            "id": "string",
            "index": "string",
            "roleArn": "string",
            "type": "string"
         },
         "republish": { 
            "headers": { 
               "contentType": "string",
               "correlationData": "string",
               "messageExpiry": "string",
               "payloadFormatIndicator": "string",
               "responseTopic": "string",
               "userProperties": [ 
                  { 
                     "key": "string",
                     "value": "string"
                  }
               ]
            },
            "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"
         },
         "timestream": { 
            "databaseName": "string",
            "dimensions": [ 
               { 
                  "name": "string",
                  "value": "string"
               }
            ],
            "roleArn": "string",
            "tableName": "string",
            "timestamp": { 
               "unit": "string",
               "value": "string"
            }
         }
      }
   ],
   "awsIotSqlVersion": "string",
   "description": "string",
   "errorAction": { 
      "cloudwatchAlarm": { 
         "alarmName": "string",
         "roleArn": "string",
         "stateReason": "string",
         "stateValue": "string"
      },
      "cloudwatchLogs": { 
         "batchMode": boolean,
         "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": { 
         "batchMode": boolean,
         "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": { 
         "batchMode": boolean,
         "channelArn": "string",
         "channelName": "string",
         "roleArn": "string"
      },
      "iotEvents": { 
         "batchMode": boolean,
         "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"
      },
      "kafka": { 
         "clientProperties": { 
            "string" : "string" 
         },
         "destinationArn": "string",
         "headers": [ 
            { 
               "key": "string",
               "value": "string"
            }
         ],
         "key": "string",
         "partition": "string",
         "topic": "string"
      },
      "kinesis": { 
         "partitionKey": "string",
         "roleArn": "string",
         "streamName": "string"
      },
      "lambda": { 
         "functionArn": "string"
      },
      "location": { 
         "deviceId": "string",
         "latitude": "string",
         "longitude": "string",
         "roleArn": "string",
         "timestamp": { 
            "unit": "string",
            "value": "string"
         },
         "trackerName": "string"
      },
      "openSearch": { 
         "endpoint": "string",
         "id": "string",
         "index": "string",
         "roleArn": "string",
         "type": "string"
      },
      "republish": { 
         "headers": { 
            "contentType": "string",
            "correlationData": "string",
            "messageExpiry": "string",
            "payloadFormatIndicator": "string",
            "responseTopic": "string",
            "userProperties": [ 
               { 
                  "key": "string",
                  "value": "string"
               }
            ]
         },
         "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"
      },
      "timestream": { 
         "databaseName": "string",
         "dimensions": [ 
            { 
               "name": "string",
               "value": "string"
            }
         ],
         "roleArn": "string",
         "tableName": "string",
         "timestamp": { 
            "unit": "string",
            "value": "string"
         }
      }
   },
   "ruleDisabled": boolean,
   "sql": "string"
}URI Request Parameters
The request uses the following URI parameters.
- ruleName
- 
               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. NoteFor 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.
- actions
- 
               The actions associated with the rule. Type: Array of Action objects Array Members: Minimum number of 0 items. Maximum number of 10 items. Required: Yes 
- awsIotSqlVersion
- 
               The version of the SQL rules engine to use when evaluating the rule. Type: String Required: No 
- description
- 
               The description of the rule. Type: String Required: No 
- errorAction
- 
               The action to take when an error occurs. Type: Action object Required: No 
- ruleDisabled
- 
               Specifies whether the rule is disabled. Type: Boolean Required: No 
- sql
- 
               The SQL statement used to query the topic. For more information, see Amazon IoT SQL Reference in the Amazon IoT Developer Guide. Type: String 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.
Errors
- ConflictingResourceUpdateException
- 
               A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict. - message
- 
                        The message for the exception. 
 HTTP Status Code: 409 
- InternalException
- 
               An unexpected error has occurred. - message
- 
                        The message for the exception. 
 HTTP Status Code: 500 
- InvalidRequestException
- 
               The request is not valid. - message
- 
                        The message for the exception. 
 HTTP Status Code: 400 
- ResourceAlreadyExistsException
- 
               The resource already exists. - message
- 
                        The message for the exception. 
- resourceArn
- 
                        The ARN of the resource that caused the exception. 
- resourceId
- 
                        The ID of the resource that caused the exception. 
 HTTP Status Code: 409 
- ServiceUnavailableException
- 
               The service is temporarily unavailable. - message
- 
                        The message for the exception. 
 HTTP Status Code: 503 
- SqlParseException
- 
               The Rule-SQL expression can't be parsed correctly. - message
- 
                        The message for the exception. 
 HTTP Status Code: 400 
See Also
For more information about using this API in one of the language-specific Amazon SDKs, see the following: