aws_iot_topic_rule
Example Usage
resource "aws_iot_topic_rule" "rule" { name = "MyRule" description = "Example rule" enabled = true sql = "SELECT * FROM 'topic/test'" sql_version = "2015-10-08" sns { message_format = "RAW" role_arn = "${aws_iam_role.role.arn}" target_arn = "${aws_sns_topic.mytopic.arn}" } } resource "aws_sns_topic" "mytopic" { name = "mytopic" } resource "aws_iam_role" "role" { name = "myrole" assume_role_policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF } resource "aws_iam_role_policy" "iam_policy_for_lambda" { name = "mypolicy" role = "${aws_iam_role.role.id}" policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "${aws_sns_topic.mytopic.arn}" } ] } EOF }
Argument Reference
-
name
- (Required) The name of the rule. -
description
- (Optional) The description of the rule. -
enabled
- (Required) Specifies whether the rule is enabled. -
sql
- (Required) The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference (http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference) in the AWS IoT Developer Guide. -
sql_version
- (Required) The version of the SQL rules engine to use when evaluating the rule.
The cloudwatch_alarm
object takes the following arguments:
-
alarm_name
- (Required) The CloudWatch alarm name. -
role_arn
- (Required) The IAM role ARN that allows access to the CloudWatch alarm. -
state_reason
- (Required) The reason for the alarm change. -
state_value
- (Required) The value of the alarm state. Acceptable values are: OK, ALARM, INSUFFICIENT_DATA.
The cloudwatch_metric
object takes the following arguments:
-
metric_name
- (Required) The CloudWatch metric name. -
metric_namespace
- (Required) The CloudWatch metric namespace name. -
metric_timestamp
- (Optional) An optional Unix timestamp (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp). -
metric_unit
- (Required) The metric unit (supported units can be found here: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Unit) -
metric_value
- (Required) The CloudWatch metric value. -
role_arn
- (Required) The IAM role ARN that allows access to the CloudWatch metric.
The dynamodb
object takes the following arguments:
-
hash_key_field
- (Required) The hash key name. -
hash_key_type
- (Optional) The hash key type. Valid values are "STRING" or "NUMBER". -
hash_key_value
- (Required) The hash key value. -
payload_field
- (Optional) The action payload. -
range_key_field
- (Optional) The range key name. -
range_key_type
- (Optional) The range key type. Valid values are "STRING" or "NUMBER". -
range_key_value
- (Optional) The range key value. -
role_arn
- (Required) The ARN of the IAM role that grants access to the DynamoDB table. -
table_name
- (Required) The name of the DynamoDB table.
The elasticsearch
object takes the following arguments:
-
endpoint
- (Required) The endpoint of your Elasticsearch domain. -
id
- (Required) The unique identifier for the document you are storing. -
index
- (Required) The Elasticsearch index where you want to store your data. -
role_arn
- (Required) The IAM role ARN that has access to Elasticsearch. -
type
- (Required) The type of document you are storing.
The firehose
object takes the following arguments:
-
delivery_stream_name
- (Required) The delivery stream name. -
role_arn
- (Required) The IAM role ARN that grants access to the Amazon Kinesis Firehose stream.
The kinesis
object takes the following arguments:
-
partition_key
- (Optional) The partition key. -
role_arn
- (Required) The ARN of the IAM role that grants access to the Amazon Kinesis stream. -
stream_name
- (Required) The name of the Amazon Kinesis stream.
The lambda
object takes the following arguments:
-
function_arn
- (Required) The ARN of the Lambda function.
The republish
object takes the following arguments:
-
role_arn
- (Required) The ARN of the IAM role that grants access. -
topic
- (Required) The name of the MQTT topic the message should be republished to.
The s3
object takes the following arguments:
-
bucket_name
- (Required) The Amazon S3 bucket name. -
key
- (Required) The object key. -
role_arn
- (Required) The ARN of the IAM role that grants access.
The sns
object takes the following arguments:
-
message_format
- (Required) The message format of the message to publish. Accepted values are "JSON" and "RAW". -
role_arn
- (Required) The ARN of the IAM role that grants access. -
target_arn
- (Required) The ARN of the SNS topic.
The sqs
object takes the following arguments:
-
queue_url
- (Required) The URL of the Amazon SQS queue. -
role_arn
- (Required) The ARN of the IAM role that grants access. -
use_base64
- (Required) Specifies whether to use Base64 encoding.
Attributes Reference
In addition to all arguments above, the following attributes are exported:
Import
IoT Topic Rules can be imported using the name
, e.g.
$ terraform import aws_iot_topic_rule.rule <name>
© 2018 HashiCorpLicensed under the MPL 2.0 License.
https://www.terraform.io/docs/providers/aws/r/iot_topic_rule.html