继续我们的AWS物联网探索, 在这篇文章中,我们看到了如何使用AWS物联网规则将来自物联网设备的传入数据存储在DynamoDB表中. 第1部分 本系列的详细介绍了如何使用AWS物联网平台连接和认证设备.
创建DynamoDB表
- 为了在DynamoDB中存储设备数据,我们必须创建一个具有以下属性的DynamoDB表,
- 在主键部分添加 sample_time. 这是样本被记录的时间.
- 在排序键段添加 device_id 说明是提供样本的设备吗
- device_data 从设备接收的数据是否被规则查询语句格式化
打开 DynamoDB控制台,选择“创建表”.
在“创建DynamoDB表”下
- 在 表名 Section,输入表名: Iotdevice_data.
- 下 主键,在 分区键,输入 sample_time,并选择 数量 在与字段相邻的可用选项列表中.
- 然后检查 添加排序键.
- 以下 添加排序键,输入 device_id,并选择 数量 在字段旁边的选项列表中,
- 现在选择 创建 在最后一页.
- device_data 可以在配置DynamoDB规则动作时定义.
创建AWS物联网规则,将数据发送到AWS DynamoDB表
将物联网设备数据存储在数据库表中, 使用规则查询语句格式化设备数据. 以下是JSON格式的从天气传感器设备接收到的样本数据,
{ “温度”:22日 “湿度”:84年, “晴雨表”:1233年, "风":{ 32岁的“速度”: “轴承”:245 } }
将上述数据存储在DynamoDB表中, 我们使用规则查询语句来重构数据,如下所示,
{ “温度”:22日 “湿度”:84年, “晴雨表”:1233年, 32岁的“风_velocity”: “风_bearing”:245 }
我们可以在创建该规则时使用Substitution模板. 替换模板是允许我们从函数和消息负载中插入动态值的表达式.
- 输入 的 规则 AWS物联网控制台的集线器.
- 在规则部分中选择创建
- 在的名字下,输入规则的名称, Iotdevice_data_ddb. 此名称在AWS帐户和区域内是唯一的, 并且不应该包含任何空格, 不过,允许有下划线。.
- 在 描述 部分,列出我们规则的目的. 输入有意义的描述,概括规则的目的.
- 下 创建规则的,在“规则查询语句”区域,在“使用SQL版本”区域,选择 2016-03-23.
- 在“规则”查询语句编辑框中输入以下查询:
选择温度、湿度、气压计、 风.风_velocity速度, 风.轴承作为风_bearing, 从“设备/ + /数据”
- 属性匹配的主题将侦听来自该主题的MQTT消息 设备/ + /数据 主题过滤.
- 风属性元素将被格式化为单独的属性. (e.g., 风_velocity 和 风_bearing)
- 温度、湿度和气压计属性将保持不变.
- 下 设置一个或多个动作 节中,
- 要查看此规则的操作列表,请选择 添加
- 选择 向DynamoDB表中插入一条消息
- 然后选择 配置 动作,在动作列表的底部,打开所选动作的配置页面
- 在 配置 行动部分,
- 下 Table 的名字,从上面步骤中创建的列表中选择DynamoDB表名: Iotdevice _data. 其他领域如 分区键、分区键类型、排序键、排序键类型 从DynamoDB表填充值.
- 下 分区键值 部分,输入 ${时间戳()}. 在这条规则, 而不是使用来自消息有效负载的直接值, 它将使用一个Substitution模板并从时间戳函数返回值.
- 下 键值排序,输入 ${铸造(主题(2)小数)}. 这是第二个替换模板,它将在主题名(i.e device_id)转换为十进制值,以匹配键的数字格式.
- 下 将消息数据写入此列,输入 device_data. 这将创建一个带有的名字的新列 device_data DynamoDB表中.
- 离开 操作 部分空.
- 选择 创建角色 从 选择或创建角色 授予AWS物联网访问以执行此操作.
- 下 创建一个新角色 部分,输入 Iotdevice _ddb_role,然后选择 创建角色.
- 选择 添加操作 在底部 配置 行动和选择 创建规则 在创建 a rule的底部创建规则.

测试AWS物联网规则和DynamoDB表插入
使用MQTT客户机,我们可以测试新规则以发布和订阅MQTT消息.
在AWS物联网控制台的左侧导航中
- 选择MQTT客户机,然后选择订阅主题, add 设备/ + /数据 和订阅
- 对于“主题”过滤器,输入之前创建的主题, 设备/ + /数据 在主题部分
- 选择订阅.
有了特定的设备ID, 设备/ 22 /数据,将消息发布到输入主题. 您不能发布到包含通配符的MQTT主题.
- 在MQTT客户端部分中,选择 发布到主题.
- 输入输入主题名称, 设备/ 22 /数据 主题名称,
- 为Message有效负载输入以下示例数据
{ “温度”:22日 “湿度”:84年, “晴雨表”:1233年, "风":{ 32岁的“速度”: “轴承”:245 } }
- 选择 发布,以发布MQTT消息和 订阅主题 在MQTT客户端部分.
- 添加 设备/ + /数据 在“订阅”栏下. 检查上一步的示例数据是否出现在那里.
检查由规则创建的DynamoDB表中的行.
- 进入 DynamoDB表hub在AWS物联网控制台,并选择 Iotdevice, 然后在那个窗口中选择Items选项卡.
- 现在我们可以看到 sample_time 表中的值是链接的. 发送第一个消息, 我们可以看到它将是列表中唯一包含所有数据的
- 扩大 device_data,如果你想看到规则查询语句产生的数据. 我们也可以编辑这些数据.
- 选择保存, 如果您想保存修改或选择“取消”退出而不保存任何更改

以JSON格式发送设备数据到DynamoDB表.

数据存储在DynamoDB成功.
关于作者
Rasmi Bhuyan
Rasmi拥有科学学士学位,已经在菠菜大平台(现在是Synerzip)工作了将近一年. 他是一个物联网爱好者,最近一直在摆弄不同的平台.