本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
DynamoDB
DynamoDB dynamoDB
() 操作将消息的全部或部分写入亚马逊 DynamoDB 表。MQTT
您可以按照教程执行操作,该教程向您说明如何使用 DynamoDB 操作创建并测试规则。有关更多信息,请参阅 教程:将设备数据存储在 DynamoDB 表中。
注意
此规则将非数据作为二进制JSON数据写入 DynamoDB。DynamoDB 控制台以 Base64 编码文本格式显示数据。
要求
此规则操作具有以下要求:
-
AWS IoT 可以IAM担任执行
dynamodb:PutItem
操作的角色。有关更多信息,请参阅 授予 AWS IoT 规则所需的访问权限。在 AWS IoT 控制台中,您可以选择或创建 AWS IoT 允许执行此规则操作的角色。
-
如果您使用客户托管 AWS KMS key (KMS密钥)对 DynamoDB 中的静态数据进行加密,则该服务必须有权代表调用KMS者使用该密钥。有关更多信息,请参阅 Amazon DynamoDB 入门指南中的客户托管KMS密钥。
参数
使用此操作创建 AWS IoT 规则时,必须指定以下信息:
tableName
-
DynamoDB 表的名称。
支持替换模板:API且 AWS CLI 仅支持
hashKeyField
-
哈希键(也称为分区键)的名称。
支持替换模板:API且 AWS CLI 仅支持
hashKeyType
-
(可选)哈希键(也称为分区键)的数据类型。有效值:
STRING
、NUMBER
。支持替换模板:API且 AWS CLI 仅支持
hashKeyValue
-
哈希键的值。考虑使用替代模板,例如
${topic()}
或者${timestamp()}
。支持替换模板:是
rangeKeyField
-
(可选)范围键(也称为排序键)的名称。
支持替换模板:API且 AWS CLI 仅支持
rangeKeyType
-
(可选)范围键(也称为排序键)的数据类型。有效值:
STRING
、NUMBER
。支持替换模板:API且 AWS CLI 仅支持
rangeKeyValue
-
(可选)范围键的值。考虑使用替代模板,例如
${topic()}
或者${timestamp()}
。支持替换模板:是
payloadField
-
(可选)负载将写入的列的名称。如果省略此值,负载将写入
payload
列。支持替换模板:是
operation
-
(可选)要执行的操作类型。有效值:
INSERT
、UPDATE
、DELETE
。支持替换模板:是
roleARN
-
允许访问 DynamoDB 表的IAM角色。有关更多信息,请参阅 要求。
支持替换模板:否
写入 DynamoDB 表的数据是规则语句SQL的结果。
示例
以下JSON示例在规则中定义了 DynamoDB 操作。 AWS IoT
{ "topicRulePayload": { "sql": "SELECT * AS message FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my_ddb_table", "hashKeyField": "key", "hashKeyValue": "${topic()}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB" } } ] } }
另请参阅
-
Amazon DynamoDB 开发人员指南中的什么是 DynamoDB?
-
Amazon DynamoDB 开发人员指南中的 DynamoDB 入门