您可以設定雲產品流轉的資料指令碼,使用指令碼和函數將解析處理後的資料轉寄到雲資料庫RDS版(以下簡稱RDS)的執行個體中儲存。本文以物模型資料上報Topic為例,介紹流轉訊息資料的完整流程。
前提條件
已添加待轉寄的裝置Topic資料來源。例如:建立資料來源DataSource,添加指定裝置的物模型資料上報Topic。具體步驟,請參見添加待流轉的資料來源。
已在您的物聯網平台執行個體所在地區建立專用網路下的MySQL或SQL Server版RDS執行個體,並建立資料庫和資料表。RDS使用方法,請參見雲資料庫RDS文檔。
背景資訊
轉寄的資料目的配置完成後,會自動完成以下配置,實現裝置資料通過物聯網平台的規則引擎轉寄到雲資料庫RDS。
物聯網平台佔用RDS執行個體所在虛擬交換器的2個IP地址;將虛擬交換器的IPv4網段配置到RDS執行個體的白名單中。
在RDS執行個體所在的VPC網路下建立託管安全性群組,安全性群組名稱預設以sg-nsm-開頭。
使用限制
地區限制:
物聯網平台執行個體及所在地區支援將資料轉寄到雲資料庫RDS。支援的地區詳細資料,請參見各地區功能說明。
RDS執行個體所在地區必須與當前物聯網平台執行個體所在地區保持一致。例如:華東2(上海)的物聯網平台執行個體資料只能轉寄到華東2(上海)的RDS資料表中。
僅支援轉寄到Virtual Private Cloud下的RDS執行個體。
支援MySQL執行個體和SQL Server執行個體。
支援普通資料庫和高許可權資料庫的轉寄。
僅支援轉寄JSON格式資料。
使用說明
目前,新版和舊版雲產品流轉功能均支援將資料流轉到雲資料庫RDS。舊版雲產品流轉使用樣本,請參見資料轉寄到雲資料庫RDS(舊版)。
建立資料目的
登入物聯網平台控制台。
在執行個體概覽頁簽的全部環境下,找到對應的執行個體,單擊執行個體卡片。
在左側導覽列,選擇 。
在雲產品流轉頁面,單擊右上方體驗新版,進入新版功能頁面。
說明如果您已執行過此操作,再次進入雲產品流轉頁面,會直接進入新版功能頁面。
- 單擊資料目的頁簽,然後單擊建立資料目的。
在建立資料目的對話方塊,輸入資料目的名稱,例如DataPurpose,按照以下參數說明,完成配置,然後單擊確定。
參數
描述
選擇操作
選擇儲存到雲資料庫(RDS)中。
地區
固定為您的物聯網平台執行個體所在地區。
RDS執行個體
選擇RDS執行個體。
資料庫
輸入資料庫名。
說明如果是高許可權資料庫,需要您手動輸入資料庫名稱。
帳號
輸入RDS執行個體的使用者帳號。此帳號應具有該資料庫的讀寫權限,否則規則引擎無法將資料寫入RDS。
說明規則引擎獲得帳號後,僅將規則匹配的資料寫進資料庫中,不會做其他動作。
密碼
輸入登入RDS執行個體的密碼。
表名
輸入資料庫中已建立的資料表名。規則引擎將把資料寫入這張表上。
角色
授權物聯網平台將資料寫入RDS。
如您還未建立相關角色,單擊建立RAM角色,跳轉到RAM控制台,建立角色和授權策略,請參見建立RAM角色。
配置並啟動解析器
- 建立解析器,例如DataParser。具體操作,請參見步驟一:建立解析器。
- 在解析器詳情頁面,關聯資料來源。
- 在設定精靈的資料來源下,單擊關聯資料來源。
- 在彈出的對話方塊中,單擊資料來源下拉式清單,選擇已建立的資料來源DataSource,單擊確定。
- 在解析器詳情頁面,關聯資料目的。
- 單擊設定精靈的資料目的,然後單擊資料目的列表右上方的關聯資料目的。
- 在彈出的對話方塊中,單擊資料目的下拉式清單,選擇已建立的資料目的DataPurpose,單擊確定。
- 在資料目的列表,查看並儲存資料目的ID,例如為1000。後續解析指令碼中,需使用此處的資料目的ID。
- 在解析器詳情頁面,單擊解析器。
在指令碼輸入框,輸入解析指令碼。
函數參數說明,請參見函數列表。
寫入資料:
// 通過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