AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

CreateTopicRule

CreateTopicRule

创建规则。创建规则是管理员级别操作。有权创建规则的所有用户都将能够访问规则所处理的数据。

https

请求语法:

POST /rules/ruleName Content-type: application/json { "topicRulePayload": { "sql": "string", "description": "string", "actions": [ { "dynamoDB": { "tableName": "string", "roleArn": "string", "operation": "string", "hashKeyField": "string", "hashKeyValue": "string", "hashKeyType": "string", "rangeKeyField": "string", "rangeKeyValue": "string", "rangeKeyType": "string", "payloadField": "string" }, "dynamoDBv2": { "roleArn": "string", "putItem": { "tableName": "string" } }, "lambda": { "functionArn": "string" }, "sns": { "targetArn": "string", "roleArn": "string", "messageFormat": "string" }, "sqs": { "roleArn": "string", "queueUrl": "string", "useBase64": "boolean" }, "kinesis": { "roleArn": "string", "streamName": "string", "partitionKey": "string" }, "republish": { "roleArn": "string", "topic": "string" }, "s3": { "roleArn": "string", "bucketName": "string", "key": "string", "cannedAcl": "string" }, "firehose": { "roleArn": "string", "deliveryStreamName": "string", "separator": "string" }, "cloudwatchMetric": { "roleArn": "string", "metricNamespace": "string", "metricName": "string", "metricValue": "string", "metricUnit": "string", "metricTimestamp": "string" }, "cloudwatchAlarm": { "roleArn": "string", "alarmName": "string", "stateReason": "string", "stateValue": "string" }, "elasticsearch": { "roleArn": "string", "endpoint": "string", "index": "string", "type": "string", "id": "string" }, "salesforce": { "token": "string", "url": "string" }, "iotAnalytics": { "channelArn": "string", "channelName": "string", "roleArn": "string" } } ], "ruleDisabled": "boolean", "awsIotSqlVersion": "string", "errorAction": { "dynamoDB": { "tableName": "string", "roleArn": "string", "operation": "string", "hashKeyField": "string", "hashKeyValue": "string", "hashKeyType": "string", "rangeKeyField": "string", "rangeKeyValue": "string", "rangeKeyType": "string", "payloadField": "string" }, "dynamoDBv2": { "roleArn": "string", "putItem": { "tableName": "string" } }, "lambda": { "functionArn": "string" }, "sns": { "targetArn": "string", "roleArn": "string", "messageFormat": "string" }, "sqs": { "roleArn": "string", "queueUrl": "string", "useBase64": "boolean" }, "kinesis": { "roleArn": "string", "streamName": "string", "partitionKey": "string" }, "republish": { "roleArn": "string", "topic": "string" }, "s3": { "roleArn": "string", "bucketName": "string", "key": "string", "cannedAcl": "string" }, "firehose": { "roleArn": "string", "deliveryStreamName": "string", "separator": "string" }, "cloudwatchMetric": { "roleArn": "string", "metricNamespace": "string", "metricName": "string", "metricValue": "string", "metricUnit": "string", "metricTimestamp": "string" }, "cloudwatchAlarm": { "roleArn": "string", "alarmName": "string", "stateReason": "string", "stateValue": "string" }, "elasticsearch": { "roleArn": "string", "endpoint": "string", "index": "string", "type": "string", "id": "string" }, "salesforce": { "token": "string", "url": "string" }, "iotAnalytics": { "channelArn": "string", "channelName": "string", "roleArn": "string" } } } }

URI 请求参数:

名称

类型

请求?

描述

ruleName

RuleName

规则的名称。

请求正文参数:

名称

类型

请求?

描述

topicRulePayload

TopicRulePayload

规则负载。

错误:

SqlParseException

无法正确解析 Rule-SQL 表达式。

HTTP 响应代码:400

InternalException

出现意外错误。

HTTP 响应代码:500

InvalidRequestException

请求的内容无效。例如,UpdateJobExecution 请求包含无效状态详细信息时,将返回此代码。消息包含有关错误的详细信息。

HTTP 响应代码:400

ResourceAlreadyExistsException

该资源已存在。

HTTP 响应代码:409

ServiceUnavailableException

服务暂时不可用。

HTTP 响应代码:503

cli

摘要:

aws iot create-topic-rule \ --rule-name <value> \ --topic-rule-payload <value> \ [--cli-input-json <value>] \ [--generate-cli-skeleton]

cli-input-json format:

{ "ruleName": "string", "topicRulePayload": { "sql": "string", "description": "string", "actions": [ { "dynamoDB": { "tableName": "string", "roleArn": "string", "operation": "string", "hashKeyField": "string", "hashKeyValue": "string", "hashKeyType": "string", "rangeKeyField": "string", "rangeKeyValue": "string", "rangeKeyType": "string", "payloadField": "string" }, "dynamoDBv2": { "roleArn": "string", "putItem": { "tableName": "string" } }, "lambda": { "functionArn": "string" }, "sns": { "targetArn": "string", "roleArn": "string", "messageFormat": "string" }, "sqs": { "roleArn": "string", "queueUrl": "string", "useBase64": "boolean" }, "kinesis": { "roleArn": "string", "streamName": "string", "partitionKey": "string" }, "republish": { "roleArn": "string", "topic": "string" }, "s3": { "roleArn": "string", "bucketName": "string", "key": "string", "cannedAcl": "string" }, "firehose": { "roleArn": "string", "deliveryStreamName": "string", "separator": "string" }, "cloudwatchMetric": { "roleArn": "string", "metricNamespace": "string", "metricName": "string", "metricValue": "string", "metricUnit": "string", "metricTimestamp": "string" }, "cloudwatchAlarm": { "roleArn": "string", "alarmName": "string", "stateReason": "string", "stateValue": "string" }, "elasticsearch": { "roleArn": "string", "endpoint": "string", "index": "string", "type": "string", "id": "string" }, "salesforce": { "token": "string", "url": "string" }, "iotAnalytics": { "channelArn": "string", "channelName": "string", "roleArn": "string" } } ], "ruleDisabled": "boolean", "awsIotSqlVersion": "string", "errorAction": { "dynamoDB": { "tableName": "string", "roleArn": "string", "operation": "string", "hashKeyField": "string", "hashKeyValue": "string", "hashKeyType": "string", "rangeKeyField": "string", "rangeKeyValue": "string", "rangeKeyType": "string", "payloadField": "string" }, "dynamoDBv2": { "roleArn": "string", "putItem": { "tableName": "string" } }, "lambda": { "functionArn": "string" }, "sns": { "targetArn": "string", "roleArn": "string", "messageFormat": "string" }, "sqs": { "roleArn": "string", "queueUrl": "string", "useBase64": "boolean" }, "kinesis": { "roleArn": "string", "streamName": "string", "partitionKey": "string" }, "republish": { "roleArn": "string", "topic": "string" }, "s3": { "roleArn": "string", "bucketName": "string", "key": "string", "cannedAcl": "string" }, "firehose": { "roleArn": "string", "deliveryStreamName": "string", "separator": "string" }, "cloudwatchMetric": { "roleArn": "string", "metricNamespace": "string", "metricName": "string", "metricValue": "string", "metricUnit": "string", "metricTimestamp": "string" }, "cloudwatchAlarm": { "roleArn": "string", "alarmName": "string", "stateReason": "string", "stateValue": "string" }, "elasticsearch": { "roleArn": "string", "endpoint": "string", "index": "string", "type": "string", "id": "string" }, "salesforce": { "token": "string", "url": "string" }, "iotAnalytics": { "channelArn": "string", "channelName": "string", "roleArn": "string" } } } }

cli-input-json 字段:

名称

类型

描述

ruleName

字符串

最大长度:128,最小长度:1

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

规则的名称。

topicRulePayload

TopicRulePayload

规则负载。

sql

字符串

用于查询主题的 SQL 语句。有关更多信息,请参阅 AWS IoT 开发人员指南 中的 AWS IoT SQL 参考

description

字符串

规则的描述。

操作

列表

成员:Action

与该规则关联的操作。

dynamoDB

DynamoDBAction

写入到 DynamoDB 表。

tableName

字符串

DynamoDB 表的名称。

roleArn

字符串

授予对 DynamoDB 表的访问权限的 IAM 角色的 ARN。

operation

字符串

要执行的操作类型。该信息遵循替换模板,因此可以是 $ operation,但替换必须产生以下操作之一:INSERTUPDATEDELETE

hashKeyField

字符串

哈希键名称。

hashKeyValue

字符串

哈希键值。

hashKeyType

字符串

哈希键类型。有效值为“STRING”或“NUMBER”

枚举:STRING | NUMBER

rangeKeyField

字符串

范围键名称。

rangeKeyValue

字符串

范围键值。

rangeKeyType

字符串

范围键类型。有效值为“STRING”或“NUMBER”

枚举:STRING | NUMBER

payloadField

字符串

操作负载。此名称可以自定义。

dynamoDBv2

DynamoDBv2Action

写入到 DynamoDB 表。这是 DynamoDB 操作的新版本。它允许您将 MQTT 消息负载中的各个属性分别写入不同的 DynamoDB 列。

roleArn

字符串

授予对 DynamoDB 表的访问权限的 IAM 角色的 ARN。

putItem

PutItemInput

指定消息数据将写入的 DynamoDB 表。例如:

{ "dynamoDBv2": { "roleArn": "aws:iam:12341251:my-role" "putItem": { "tableName": "my-table" } } }

消息负载中的每个属性将写入到 DynamoDB 数据库中的单独一列。

tableName

字符串

消息数据将写入的表

lambda

LambdaAction

调用 Lambda 函数。

functionArn

字符串

Lambda 函数的 ARN。

sns

SnsAction

发布到 Amazon SNS 主题。

targetArn

字符串

SNS 主题的 ARN。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

messageFormat

字符串

要发布的消息的消息格式。可选。接受的值为“JSON”和“RAW”。该属性的默认值为“RAW”。SNS 使用此设置来确定是否应解析负载,以及是否应提取负载的特定于平台的相关位。要了解有关 SNS 消息格式的更多信息,请访问 http://docs.amazonaws.cn/sns/latest/dg/json-formats.html 以查看其官方文档。

枚举:RAW | JSON

sqs

SqsAction

发布到 Amazon SQS 队列。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

queueUrl

字符串

Amazon SQS 队列的 URL。

useBase64

布尔值

指定是否使用 Base64 编码。

kinesis

KinesisAction

将数据写入 Amazon Kinesis 流。

roleArn

字符串

授予对 Amazon Kinesis 流的访问权限的 IAM 角色的 ARN。

streamName

字符串

Amazon Kinesis 流的名称。

partitionKey

字符串

分区键。

重新发布

RepublishAction

发布到其他 MQTT 主题。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

topic

字符串

MQTT; 主题的名称。

S3

S3 操作

写入 Amazon S3 存储桶。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

bucketName

字符串

Amazon S3 存储桶。

key

字符串

对象键。

cannedAcl

字符串

Amazon S3 标准 ACL,用于控制对由对象键标识的对象的访问权限。有关更多信息,请参阅 S3 标准 ACL

枚举:private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control | log-delivery-write

firehose

FirehoseAction

将数据写入 Amazon Kinesis Firehose 流。

roleArn

字符串

授予对 Amazon Kinesis Firehose 流的访问权限的 IAM 角色。

deliveryStreamName

字符串

传输流名称。

separator

字符串

pattern: ([ ])|( )|(,)

将用于分隔写入到 Firehose 流的记录的字符分隔符。有效值为:'\n'(换行符)、'\t'(制表符)、'\r\n'(Windows 换行符)、','(逗号)。

cloudwatchMetric

CloudwatchMetricAction

捕获 CloudWatch 指标。

roleArn

字符串

允许访问 CloudWatch 指标的 IAM 角色。

metricNamespace

字符串

CloudWatch 指标命名空间名称。

metricName

字符串

CloudWatch 指标名称。

metricValue

字符串

CloudWatch 指标值。

metricUnit

字符串

CloudWatch 支持的指标单位

metricTimestamp

字符串

可选 Unix 时间戳

cloudwatchAlarm

CloudwatchAlarmAction

更改 CloudWatch 警报的状态。

roleArn

字符串

允许访问 CloudWatch 警报的 IAM 角色。

alarmName

字符串

CloudWatch 警报名称。

stateReason

字符串

警报更改的原因。

stateValue

字符串

警报状态的值。可接受的值为:OK、ALARM、INSUFFICIENT_DATA。

elasticsearch

ElasticsearchAction

将数据写入 Amazon Elasticsearch Service 域。

roleArn

字符串

具有 Elasticsearch 访问权限的 IAM 角色 ARN。

endpoint

字符串

模式:https?://.*

Elasticsearch 域的终端节点。

index

字符串

您要在其中存储数据的 Elasticsearch 索引。

type

字符串

您存储的文档类型。

id

字符串

您将要存储的文档的唯一标识符。

salesforce

SalesforceAction

向 Salesforce IoT Cloud 输入流发送消息。

token

字符串

最小长度:40

用于验证对 Salesforce IoT Cloud 输入流的访问权限的令牌。在创建输入流之后,可从 Salesforce IoT Cloud 平台获取该令牌。

url

字符串

最大长度:2000

模式:https://ingestion-[a-zA-Z0-9]{1,12}.[a-zA-Z0-9]+.((sfdc-matrix.net)|(sfdcnow.com))/streams/w 1,20/w 1,20/event

由 Salesforce IoT Cloud 输入流公开的 URL。在创建输入流之后,可从 Salesforce IoT Cloud 平台获取该 URL。

iotAnalytics

IotAnalyticsAction

向 AWS IoT Analytics 通道发送消息数据。

channelArn

字符串

(已弃用) 消息数据将发送到的 IoT Analytics 通道的 ARN。

channelName

字符串

消息数据将发送到的 IoT Analytics 通道的名称。

roleArn

字符串

一个角色的 ARN,该角色具有授予通过 IoT Analytics (iotanalytics:BatchPutMessage) 发送消息数据的 IoT Analytics 权限的策略。

ruleDisabled

布尔值

指定是否禁用规则。

awsIotSqlVersion

字符串

评估规则时使用的 SQL 规则引擎的版本。

errorAction

操作

发生错误时要执行的操作。

dynamoDB

DynamoDBAction

写入到 DynamoDB 表。

tableName

字符串

DynamoDB 表的名称。

roleArn

字符串

授予对 DynamoDB 表的访问权限的 IAM 角色的 ARN。

operation

字符串

要执行的操作类型。该信息遵循替换模板,因此可以是 $ operation,但替换必须产生以下操作之一:INSERTUPDATEDELETE

hashKeyField

字符串

哈希键名称。

hashKeyValue

字符串

哈希键值。

hashKeyType

字符串

哈希键类型。有效值为“STRING”或“NUMBER”

枚举:STRING | NUMBER

rangeKeyField

字符串

范围键名称。

rangeKeyValue

字符串

范围键值。

rangeKeyType

字符串

范围键类型。有效值为“STRING”或“NUMBER”

枚举:STRING | NUMBER

payloadField

字符串

操作负载。此名称可以自定义。

dynamoDBv2

DynamoDBv2Action

写入到 DynamoDB 表。这是 DynamoDB 操作的新版本。它允许您将 MQTT 消息负载中的各个属性分别写入不同的 DynamoDB 列。

roleArn

字符串

授予对 DynamoDB 表的访问权限的 IAM 角色的 ARN。

putItem

PutItemInput

指定消息数据将写入的 DynamoDB 表。例如:

{ "dynamoDBv2": { "roleArn": "aws:iam:12341251:my-role" "putItem": { "tableName": "my-table" } } }

消息负载中的每个属性将写入到 DynamoDB 数据库中的单独一列。

tableName

字符串

消息数据将写入的表

lambda

LambdaAction

调用 Lambda 函数。

functionArn

字符串

Lambda 函数的 ARN。

sns

SnsAction

发布到 Amazon SNS 主题。

targetArn

字符串

SNS 主题的 ARN。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

messageFormat

字符串

要发布的消息的消息格式。可选。接受的值为“JSON”和“RAW”。该属性的默认值为“RAW”。SNS 使用此设置来确定是否应解析负载,以及是否应提取负载的特定于平台的相关位。要了解有关 SNS 消息格式的更多信息,请访问 http://docs.amazonaws.cn/sns/latest/dg/json-formats.html 以查看其官方文档。

枚举:RAW | JSON

sqs

SqsAction

发布到 Amazon SQS 队列。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

queueUrl

字符串

Amazon SQS 队列的 URL。

useBase64

布尔值

指定是否使用 Base64 编码。

kinesis

KinesisAction

将数据写入 Amazon Kinesis 流。

roleArn

字符串

授予对 Amazon Kinesis 流的访问权限的 IAM 角色的 ARN。

streamName

字符串

Amazon Kinesis 流的名称。

partitionKey

字符串

分区键。

重新发布

RepublishAction

发布到其他 MQTT 主题。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

topic

字符串

MQTT; 主题的名称。

S3

S3 操作

写入 Amazon S3 存储桶。

roleArn

字符串

授予访问权限的 IAM 角色的 ARN。

bucketName

字符串

Amazon S3 存储桶。

key

字符串

对象键。

cannedAcl

字符串

Amazon S3 标准 ACL,用于控制对由对象键标识的对象的访问权限。有关更多信息,请参阅 S3 标准 ACL

枚举:private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control | log-delivery-write

firehose

FirehoseAction

将数据写入 Amazon Kinesis Firehose 流。

roleArn

字符串

授予对 Amazon Kinesis Firehose 流的访问权限的 IAM 角色。

deliveryStreamName

字符串

传输流名称。

separator

字符串

pattern: ([ ])|( )|(,)

将用于分隔写入到 Firehose 流的记录的字符分隔符。有效值为:'\n'(换行符)、'\t'(制表符)、'\r\n'(Windows 换行符)、','(逗号)。

cloudwatchMetric

CloudwatchMetricAction

捕获 CloudWatch 指标。

roleArn

字符串

允许访问 CloudWatch 指标的 IAM 角色。

metricNamespace

字符串

CloudWatch 指标命名空间名称。

metricName

字符串

CloudWatch 指标名称。

metricValue

字符串

CloudWatch 指标值。

metricUnit

字符串

CloudWatch 支持的指标单位

metricTimestamp

字符串

可选 Unix 时间戳

cloudwatchAlarm

CloudwatchAlarmAction

更改 CloudWatch 警报的状态。

roleArn

字符串

允许访问 CloudWatch 警报的 IAM 角色。

alarmName

字符串

CloudWatch 警报名称。

stateReason

字符串

警报更改的原因。

stateValue

字符串

警报状态的值。可接受的值为:OK、ALARM、INSUFFICIENT_DATA。

elasticsearch

ElasticsearchAction

将数据写入 Amazon Elasticsearch Service 域。

roleArn

字符串

具有 Elasticsearch 访问权限的 IAM 角色 ARN。

endpoint

字符串

模式:https?://.*

Elasticsearch 域的终端节点。

index

字符串

您要在其中存储数据的 Elasticsearch 索引。

type

字符串

您存储的文档类型。

id

字符串

您将要存储的文档的唯一标识符。

salesforce

SalesforceAction

向 Salesforce IoT Cloud 输入流发送消息。

token

字符串

最小长度:40

用于验证对 Salesforce IoT Cloud 输入流的访问权限的令牌。在创建输入流之后,可从 Salesforce IoT Cloud 平台获取该令牌。

url

字符串

最大长度:2000

模式:https://ingestion-[a-zA-Z0-9]{1,12}.[a-zA-Z0-9]+.((sfdc-matrix.net)|(sfdcnow.com))/streams/w 1,20/w 1,20/event

由 Salesforce IoT Cloud 输入流公开的 URL。在创建输入流之后,可从 Salesforce IoT Cloud 平台获取该 URL。

iotAnalytics

IotAnalyticsAction

向 AWS IoT Analytics 通道发送消息数据。

channelArn

字符串

(已弃用) 消息数据将发送到的 IoT Analytics 通道的 ARN。

channelName

字符串

消息数据将发送到的 IoT Analytics 通道的名称。

roleArn

字符串

一个角色的 ARN,该角色具有授予通过 IoT Analytics (iotanalytics:BatchPutMessage) 发送消息数据的 IoT Analytics 权限的策略。

输出:

错误:

SqlParseException

无法正确解析 Rule-SQL 表达式。

InternalException

出现意外错误。

InvalidRequestException

请求的内容无效。例如,UpdateJobExecution 请求包含无效状态详细信息时,将返回此代码。消息包含有关错误的详细信息。

ResourceAlreadyExistsException

该资源已存在。

ServiceUnavailableException

服务暂时不可用。