AWS::IoT::TopicRule - AWS CloudFormation

AWS::IoT::TopicRule

Use the AWS::IoT::TopicRule resource to declare an AWS IoT rule. For information about working with AWS IoT rules, see Rules for AWS IoT in the AWS IoT Developer Guide.

Syntax

To declare this entity in your AWS CloudFormation template, use the following syntax:

JSON

{ "Type" : "AWS::IoT::TopicRule", "Properties" : { "RuleName" : String, "Tags" : [ Tag, ... ], "TopicRulePayload" : TopicRulePayload } }

YAML

Type: AWS::IoT::TopicRule Properties: RuleName: String Tags: - Tag TopicRulePayload: TopicRulePayload

Properties

RuleName

The name of the rule.

Required: No

Type: String

Update requires: Replacement

Tags

Metadata which can be used to manage the topic rule.

Note

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..."

Required: No

Type: List of Tag

Update requires: No interruption

TopicRulePayload

The rule payload.

Required: Yes

Type: TopicRulePayload

Update requires: No interruption

Return values

Ref

When you pass the logical ID of this resource to the intrinsic Ref function, Ref returns the topic rule name. For example:

{ "Ref": "MyTopicRule" }

For a stack named My-Stack (the - character is omitted), a value similar to the following is returned:

MyStackMyTopicRule12ABC3D456EFG

For more information about using the Ref function, see Ref.

Fn::GetAtt

The Fn::GetAtt intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the Fn::GetAtt intrinsic function, see Fn::GetAtt.

Arn

The Amazon Resource Name (ARN) of the AWS IoT rule, such as arn:aws:iot:us-east-2:123456789012:rule/MyIoTRule.

Examples

The following example declares an AWS IoT rule.

JSON

{ "AWSTemplateFormatVersion":"2010-09-09", "Resources":{ "MyTopicRule":{ "Type":"AWS::IoT::TopicRule", "Properties":{ "RuleName":{ "Ref":"NameParameter" }, "TopicRulePayload":{ "RuleDisabled":"true", "Sql":"SELECT temp FROM 'SomeTopic' WHERE temp > 60", "Actions":[ { "S3":{ "BucketName":{ "Ref":"MyBucket" }, "RoleArn":{ "Fn::GetAtt":[ "MyRole", "Arn" ] }, "Key":"MyKey.txt" } } ] }, "MyBucket":{ "Type":"AWS::S3::Bucket", "Properties":{ } }, "MyRole":{ "Type":"AWS::IAM::Role", "Properties":{ "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "iot.amazonaws.com" ] }, "Action":[ "sts:AssumeRole" ] } ] } } } }, "Parameters":{ "NameParameter":{ "Type":"String" } } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Resources: MyTopicRule: Type: AWS::IoT::TopicRule Properties: RuleName: Ref: NameParameter TopicRulePayload: RuleDisabled: 'true' Sql: SELECT temp FROM 'SomeTopic' WHERE temp > 60 Actions: - S3: BucketName: Ref: MyBucket RoleArn: Fn::GetAtt: - MyRole - Arn Key: MyKey.txt MyBucket: Type: AWS::S3::Bucket Properties: {} MyRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - iot.amazonaws.com Action: - sts:AssumeRole Parameters: NameParameter: Type: String