如何使用IoT规则将数据从AWS IoT发送到AWS DynamoDB v2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用IoT规则将数据从AWS IoT发送到AWS DynamoDB v2相关的知识,希望对你有一定的参考价值。
我想将单个数据值发送到从AWS IoT收到AWS DynamoDB的各个列。
我的设备发送此有效负载:
{
"state": {
"desired": {
"DeviceId" : "Device101",
"DateTime" : now,
"Room1 Temperature" : m_t,
"Room2 Temperature": b_t
},
"reported": {
"Item": {
"DeviceId" : "Device101",
"DateTime" : now,
"Room1 Temperature" : m_t,
"Room2 Temperature": b_t
}
}
}
}
我在Shadow Link上收到此有效负载作为影子更新:
$ AWS /事/阴影/更新
我创建了一个Sample DynamoDB表并将其与AWS IoT Rule链接,这样每当数据进入上述主题时,它将由SQL Query触发:
SELECT * FROM'$ aws / things / shadow / update'
- 此数据反映在我的影子更新中
- 此数据不会转发到DynamoDB表
- 问题是什么?!
任何帮助,将不胜感激。谢谢。
答案
首先,启用Cloudwatch日志应该可以帮助您调试此问题。
通常,这些类型的静默失败表明您没有正确格式化数据以插入DynamoDB。
要检查的事项:
- 您的SELECT语句将不起作用,因为它需要提取您要插入的内容。在您的情况下,这将是SELECT desired。*或SELECT reported.Item。*
- 主分区键必须是您引入的键之一,否则DynamoDB插入将失败。您的主分区键是什么?确保在SELECT语句的键列表中有这个
- 确保主分区键的数据类型与传入的类型相匹配 - 例如,如果主分区键是DeviceId,则它应该是字符串类型(例如,不是整数)
CloudWatch日志将提供更详细的信息以帮助您。有关如何执行此操作的信息,请参阅http://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html。
您也可以从IoT控制台启用它,方法是从左侧导航栏中选择设置(cog),然后更新Logging下的设置。
以上是关于如何使用IoT规则将数据从AWS IoT发送到AWS DynamoDB v2的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda - 如何获取来自 AWS IOT 的数据的主题名称
如何使用 AWS IoT 向/从 Web 浏览器发送/接收消息
通过 VPC 将 AWS *** NAT 到 AWS IOT