如果仅需将物联网平台数据转发到数据库保存,可以通过云产品流转功能,使用脚本和函数将解析处理后的数据转发到云数据库RDS版(以下简称RDS)实例的数据库中存储。本文以物模型数据上报Topic为例,介绍流转消息数据的完整流程。
工作原理
云产品流转将设备的Topic消息转发到RDS下数据库的数据表中存储,使用RDS的数据库服务。详细内容,请参见云数据库RDS。
在上图中:
- 数据源:支持的Topic类型消息,请参见数据格式(非云网关产品和设备)、自定义Topic(MQTT云网关)、消息转发Topic(GB/T 32960云网关)、消息转发Topic(JT/T 808云网关)、消息转发Topic(SL 651云网关)。 
- 数据目的:创建的专有网络下MySQL或SQL Server版RDS实例中数据库下的数据表,用于接收设备数据。 
- 解析器脚本:配置通过数据流转函数将Topic数据转发到RDS数据表。 - 新增数据:通过数据流转函数 - writeRds(destinationId, data)新增数据到RDS数据表。
- 更新数据:通过数据流转函数 - updateRds(destinationId, data, condition, limit)更新已写入RDS数据表的数据。
 - data仅支持Map类型数据,其中键(Key)值对应数据库表列名,值(Value)对应列值。函数详细说明,请参见函数列表。
使用限制
- 地域限制: - 物联网平台实例及所在地域支持将数据转发到云数据库RDS。支持的地域详细信息,请参见各地域功能说明。 
- RDS实例所在地域必须与当前物联网平台实例所在地域保持一致。例如:华东2(上海)的物联网平台实例数据只能转发到华东2(上海)的RDS数据表中。 
 
- 仅支持转发到专有网络(VPC)下的RDS实例。 
- 支持RDS MySQL实例和RDS SQL Server实例。 
- 支持普通数据库和高权限数据库的转发。 
- 仅支持转发JSON格式数据。 
- 新版和旧版云产品流转功能均支持将数据流转到云数据库RDS。旧版云产品流转使用示例,请参见数据转发到云数据库RDS(旧版)。 
- 物联网平台实例下设备消息转发的更多使用限制,请参见使用限制。 
前提条件
背景信息
转发的数据目的配置完成后,会自动完成以下配置,实现设备数据通过物联网平台的规则引擎转发到云数据库RDS。- 物联网平台占用RDS实例所在虚拟交换机的2个IP地址;将虚拟交换机的IPv4网段配置到RDS实例的白名单中。
- 在RDS实例所在的VPC网络下创建托管安全组,安全组名称默认以sg-nsm-开头。
创建数据目的
- 登录物联网平台控制台。 
- 在实例概览页签的全部环境下,找到对应的实例,单击实例卡片。 
- 在左侧导航栏,选择。 
- 在云产品流转页面,单击右上角体验新版,进入新版功能页面。 说明- 如果您已执行过此操作,再次进入云产品流转页面,会直接进入新版功能页面。 
- 单击数据目的页签,然后单击创建数据目的。
- 在创建数据目的对话框,输入数据目的名称,例如DataPurpose,按照以下参数说明,完成配置,然后单击确定。 - 参数 - 描述 - 选择操作 选择存储到云数据库(RDS)中。- 地域 固定为您的物联网平台实例所在地域。- RDS实例 选择RDS实例。- 数据库 输入数据库名。说明 如果是高权限数据库,需要您手动输入数据库名称。- 账号 输入RDS实例的用户账号。此账号应具有该数据库的读写权限,否则规则引擎无法将数据写入RDS。说明 规则引擎获得账号后,仅将规则匹配的数据写进数据库中,不会做其他操作。- 密码 输入登录RDS实例的密码。- 表名 输入数据库中已建立的数据表名。规则引擎将把数据写入这张表上。- 角色 授权物联网平台将数据写入RDS。- 如您还未创建相关角色,单击创建RAM角色,跳转到RAM控制台,创建角色和授权策略,请参见创建RAM角色。 
配置并启动解析器
- 创建解析器,例如DataParser。具体操作,请参见步骤一:创建解析器。
- 在解析器详情页面,关联数据源。- 在配置向导的数据源下,单击关联数据源。
- 在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源DataSource,单击确定。
 
- 在解析器详情页面,关联数据目的。- 单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的。
- 在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的DataPurpose,单击确定。
- 在数据目的列表,查看并保存数据目的ID,例如为1000。后续解析脚本中,需使用此处的数据目的ID。
 
- 在解析器详情页面,单击解析器。
- 在脚本输入框,输入解析脚本。 - 解析脚本类似JavaScript语言,编辑脚本的语法参考JavaScript语法,详细的编辑方法,请参见脚本语法。 - 函数参数说明,请参见函数列表。 - 写入数据: - // 通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。 var data = payload("json"); // 筛选出上报的温湿度值。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // RDS表结构为id[自增主键] deviceName、temperature、humidity、time,在writeRds方法中,可以按column:value的形式,将值写入对应的列。 // 设置温度值大于38时触发规则。 if (t > 38) { writeRds(1000, {"deviceName":deviceName(), "temperature":t, "time":timestamp(), "humidity":h}); }
- 更新数据: - // 通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。 var data = payload("json"); // 筛选出上报的温湿度值。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // RDS表结构为id[自增主键] deviceName、temperature、humidity、time,在updateRds方法中,可以按column:value的形式,更新对应列的值。 // 指定设备名称作为更新数据的条件。 var condition = "deviceName = '" + deviceName() +"'"; // 更新指定设备温度和湿度的一行数据。如果满足condition的有多行数据,默认从condition返回结果的第一行数据开始更新,limit为1,即更新第一行数据。 updateRds(1000, {"temperature":t, "time":timestamp(), "humidity":h}, condition, 1);
 
- 单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。 - 参数示例如下:  - 写数据的运行结果如下,表示脚本执行成功。  
- 单击发布。 
- 回到云产品流转页面的解析器页签,单击解析器DataParser对应的启动按钮,启动解析器。
- 在RDS控制台的数据安全性页面,设置和查看白名单。配置完成后,规则引擎为了连接RDS,会在RDS的白名单中添加下列IP。若以下IP未出现,请手动添加。具体操作,请参见云数据库RDS简介。- 华东2:100.104.53.192/26,100.104.148.64/26,100.104.6.192/26,100.104.143.128/26,100.104.76.0/24,100.104.73.128/26,100.104.200.64/26,100.104.40.64/26,100.104.3.0/26,100.104.29.128/26,100.104.121.0/26,100.104.84.64/26
- 亚太东南1(新加坡):100.104.106.0/24
- 美国(硅谷):100.104.8.0/24
- 美国(弗吉尼亚):100.104.133.64/26
- 德国(法兰克福):100.104.160.192/26
- 日本(东京):100.104.160.192/26
  
- 华东2:
后续操作
- 您可在物联网平台控制台对应实例下页面的云端运行日志页签,查看设备到云消息及云产品流转的运行日志。具体操作,请参见云端运行日志。 
- 您可连接RDS实例并登录RDS数据库,查看写入的数据。具体内容,请参见连接MySQL数据库、连接 SQL Server数据库。 
相关文档
- 设备接入物联网平台上报数据的操作指导,请参见设备接入引导。 
- 您可在实例详情页面,查看消息转发TPS可用资源,确保设备消息能正常转发到RDS数据库中。具体操作,请参见查看实例信息和运行数据。如果可用资源不足,可进行升配。具体内容,请参见升配。 
- 使用RDS数据库的常见问题,请参见数据库常见问题。