亞馬遜AWS IoT
原文連結:http://www.cnblogs.com/ibrahim/p/amazon-aws-iot.html
平台定位
- AWS IoT是一款托管的雲平台,使互聯裝置可以輕松安全地與雲應用程式及其他裝置互動。
- AWS IoT可支援數十億台裝置和數萬億條消息,并且可以對這些消息進行處理并将其安全可靠地路由至 AWS 終端節點和其他裝置。應用程式可以随時跟蹤所有裝置并與其通信,即使這些裝置未處于連接配接狀态也不例外。
- 使用AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和内置 Kibana 內建的 Amazon Elasticsearch Service 等AWS服務來建構IoT應用程式,以便收集、處理和分析互連裝置生成的資料并對其執行操作,且無需管理任何基礎設施。
架構
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYzNxcDN0gDOzETL1MTNxAzMxYTM3ATOwYTMwITL3YjMzQzLclDM2EDMy8CX3YjMzQzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
與AWS IoT平台內建的AWS服務
- Amazon DynamoDB—托管NoSQL資料庫
- Amazon Kinesis—大規模流式資料實時處理
- AWS Lambda—EC2雲虛拟機運作代碼響應事件
- Amazon Simple Storage Service(S3)—可擴充雲存儲
- Amazon Simple Notification—推送通知服務
- Amazon Simple Queue Service—消息隊列服務
裝置SDK
- AWS IoT 裝置 SDK 使用 MQTT、HTTP 或 WebSockets 協定将硬體裝置連接配接到 AWS IoT,硬體裝置無縫安全地與 AWS IoT 提供的裝置網關和裝置影子協作。
- 裝置 SDK 支援 C、JavaScript 、Arduino、Java和Python。
- 裝置 SDK 包含開源庫、帶有示例的開發人員指南和移植指南,使用者根據硬體平台建構 IoT 産品或解決方案。
裝置網關
- AWS IoT 裝置網關支援裝置安全高效地與 AWS IoT 進行通信。裝置網關可以使用釋出/訂閱模式交換消息,進而支援一對一和一對多的通信。憑借此一對多的通信模式,AWS IoT 将支援互連裝置向多名給定主題的訂閱者廣播資料。
- 裝置網關支援 MQTT、WebSocket 和 HTTP 1.1 協定,也支援私有協定。
- 裝置網關可自動擴充,以支援 10 億多台裝置,而無需預配置基礎設施。
認證和授權
- AWS IoT 在所有連接配接點處提供互相身份驗證和加密。AWS IoT 支援 AWS 身份驗證方法(稱為"SigV4")以及基于身份驗證的 X.509 證書。使用 HTTP 的連接配接可以使用任一方法,使用 MQTT 的連接配接可以使用基于證書的身份驗證,使用 WebSockets 的連接配接可以使用 SigV4。
- 使用 AWS IoT 生成的證書以及由首選證書頒發機構 (CA) 簽署的證書,将所選的角色和/或政策映射到每個證書,以便授予裝置或應用程式通路權限,或撤消通路權限。
- 通過控制台或使用 API 建立、部署并管理裝置的證書和政策。這些裝置證書可以預配置、激活和與使用 AWS IAM 配置的相關政策關聯。
- AWS IoT 還支援使用者移動應用使用 Amazon Cognito 進行連接配接,Amazon Cognito 将負責執行必要的操作來為應用使用者建立唯一辨別符并擷取臨時的、權限受限的 AWS 憑證。
系統資料庫
- 系統資料庫将建立裝置辨別并跟蹤中繼資料,如裝置的屬性和功能。
- 系統資料庫向格式一緻的每台裝置配置設定唯一的辨別,而不管裝置的類型和連接配接方式為何。此外,它還支援描述裝置功能的中繼資料,例如傳感器是否報告溫度,以及資料是華氏度還是攝氏度。
- 系統資料庫存儲有關裝置的中繼資料,無需支付額外費用;并且需要每隔 7 天至少通路或更新系統資料庫條目一次,系統資料庫中的中繼資料就不會過期。
以JSON格式存儲的裝置系統資料庫資訊
裝置影子(Shadow)
- 裝置影子保留每台裝置的最後報告狀态和期望的未來狀态,即便裝置處于離線狀态。
- 通過 API 或使用規則引擎,擷取裝置的最後報告狀态或設定期望的未來狀态。
- 應用程式可以設定裝置的期望未來狀态,而無需說明裝置的目前狀态。AWS IoT 将比較期望未來狀态和最後報告狀态之間的差異,并指令裝置"彌補差異"。
- 裝置 SDK 能夠輕松地同步其狀态及其影子,并響應通過影子設定的期望的未來狀态。
- 裝置影子免費儲存設備狀态多達一年。如果至少每年更新一次狀态,則裝置影子将永久保留狀态;否則狀态将過期。
裝置影子(Shadow)流程
裝置影子(Shadow)格式
裝置影子(Shadow)服務
裝置影子服務使用MQTT話題,便于應用和裝置之間的通信,下面是相關的MQTT QoS 1話題:
$aws/things/{thingName}/shadow/update
$aws/things/{thingName}/shadow/get
$aws/things/{thingName}/shadow/delete
$aws/things/{thingName}/shadow/update/accepted
$aws/things/{thingName}/shadow/update/rejected
$aws/things/{thingName}/shadow/update/delta
$aws/things/{thingName}/shadow/get/accepted
$aws/things/{thingName}/shadow/get/rejected
$aws/things/{thingName}/shadow/delete/accepted
$aws/things/{thingName}/shadow/delete/rejected
裝置SDK(C-SDK、JS-SDK)将影子功能内置在裝置中,能夠使裝置與影子服務之間自動同步狀态。
規則引擎
- 規則引擎驗證釋出到 AWS IoT 的入站消息,并根據定義的業務規則轉換這些消息并将它們傳輸到另一台裝置或雲服務。規則可以應用至一台或多台裝置中的資料,并且它可以并行執行一個或多 個操作。
- 規則引擎還可以将消息路由到 AWS 終端節點,包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和内置 Kibana 內建的 Amazon Elasticsearch Service。外部終端節點可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 進行連接配接。
- 使用類似 SQL 的語句編寫規則。例如:如果溫度讀數超出特定門檻值,則它可以觸發規則以便将資料傳輸到 AWS Lambda;如果此溫度超出其他 5 台裝置的平均值 15%,則應采取措施。
- 規則引擎将提供數十個可用于轉換資料的可用功能,并且可以通過 AWS Lambda 建立無限個功能。例如,如果正在處理各種不同的數值,則可以取傳入數字的平均值。規則還會觸發在 AWS Lambda 中執行 Java、Node.js 或 Python 代碼,進而提供最高靈活度以及處理裝置資料的能力。
規則引擎內建其它雲服務
規則引擎驗證釋出至AWS IoT的消息請求,基于業務規則轉換消息請求并釋出至其它服務,例如:
- 富集化或過濾從裝置收集的資料
- 将裝置資料寫入一個亞馬遜DynamoDBm資料庫
- 儲存檔案至亞馬遜S3
- 發送一個推送通知到所有亞馬遜SNS使用者
- 向亞馬遜SQS隊列釋出資料
- 調用Lambda函數抽取資料
- 使用亞馬遜Kinesis處理大量的裝置消息資料
- 發送資料至亞馬遜Elasticsearch服務
- 捕獲一條CloudWatch測量資料
- 更新一條CloudWatch告警
- 把一條MQTT消息資料發送至亞馬遜機器學習服務,基于亞馬遜機器學習模型進行預測
規則引擎&實時流式資料處理
N:1 入站的傳感器流式資料(資料降噪)
規則引擎過濾、轉換、彙總傳感器資料後,發送至亞馬遜Kinesis處理實時流式資料
Kinesis流式資料共享至其它業務系統
将流式資料的實時處理結果導入至資料庫、應用或其它亞馬遜服務
規則引擎&推送通知服務
推送通知
支援蘋果APNS推送通知服務、谷歌GCM雲消息服務、亞馬遜ADM裝置消息服務,微軟WNS推送服務
亞馬遜SNS推送通知服務->HTTP協定終端(短信、郵件)
通過亞馬遜SNS推送通知服務,調用第三方HTTP協定終端,支援訂閱和重試
規則引擎示例 – 使用機器學習預測函數
{ "sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23-beta", "actions": [{ "republish": { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "topic": "my-mqtt-topic" } }] } |
上面是使用亞馬遜機器學習預測函數machinelearning_predict 的規則示例,其含義是:
如果機器學習預測函數處理MQTT消息後的結果是分類1,那麼重新将此消息釋出至一個話題。
裝置管理
- 支援全球或部分地區的固件更新
- 規則引擎在DynamoDBm資料庫跟蹤更新狀态和進度
- 系統資料庫儲存設備的固件版本
S3管理固件分發版本
在S3中組織和保障和固件二進制檔案
消息代理使用話題模式通知裝置分組
通知裝置分組固件更新資訊,包括S3中的固件二進制檔案URL位址
AWS IoT平台接口
- AWS Command Line Interface (AWS CLI)
- 在Windows、Mac和Linux執行AWS IoT指令
- AWS SDKs
- 使用特定語言API開發IoT應用
- AWS IoT API
- 使用HTTP或者HTTPS請求開發IoT應用
- AWS IoT Thing SDK for C
- 在資源受限的裝置上開發IoT應用,如MCU
AWS IoT監控工具
自動化監控工具
- Amazon CloudWatch Alarms
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- AWS CloudTrail Log Monitoring
手工監控工具
- AWS IoT 儀表盤
- 證書
- 政策
- 規則
- 裝置
- CloudWatch首頁
- 目前告警和狀态
- 告警和資源圖表
- 服務健康度
- CloudWatch
- 自定義儀表盤
- 自定義圖表進行排障和監控趨勢
- 搜尋所有AWS資源名額
- 建立和修改告警參數
AWS IoT 初學者工具包
- AWS IoT 初學者工具包旨在幫助進行原型開發和安全地連接配接 AWS IoT。
- 工具包内含開發微控制器開發闆、傳感器和執行器、AWS IoT 裝置 SDK 以及入門指南。
AWS IoT 初學者工具包 - 支援的平台
AWS IoT生态
開發示例 - AWS IoT 按鈕
建立裝置
裝置屬性
建立證書
激活證書
建立政策
綁定證書與政策
綁定證書與裝置
配置裝置
使用MQTT用戶端訂閱裝置消息
使用MQTT用戶端檢視裝置消息
建立短信推送話題并訂閱此話題
建立規則
建立規則的行為
測試訂閱是否成功
平台定位
- AWS IoT是一款托管的雲平台,使互聯裝置可以輕松安全地與雲應用程式及其他裝置互動。
- AWS IoT可支援數十億台裝置和數萬億條消息,并且可以對這些消息進行處理并将其安全可靠地路由至 AWS 終端節點和其他裝置。應用程式可以随時跟蹤所有裝置并與其通信,即使這些裝置未處于連接配接狀态也不例外。
- 使用AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和内置 Kibana 內建的 Amazon Elasticsearch Service 等AWS服務來建構IoT應用程式,以便收集、處理和分析互連裝置生成的資料并對其執行操作,且無需管理任何基礎設施。
架構
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYzNxcDN0gDOzETL1MTNxAzMxYTM3ATOwYTMwITL3YjMzQzLclDM2EDMy8CX3YjMzQzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
與AWS IoT平台內建的AWS服務
- Amazon DynamoDB—托管NoSQL資料庫
- Amazon Kinesis—大規模流式資料實時處理
- AWS Lambda—EC2雲虛拟機運作代碼響應事件
- Amazon Simple Storage Service(S3)—可擴充雲存儲
- Amazon Simple Notification—推送通知服務
- Amazon Simple Queue Service—消息隊列服務
裝置SDK
- AWS IoT 裝置 SDK 使用 MQTT、HTTP 或 WebSockets 協定将硬體裝置連接配接到 AWS IoT,硬體裝置無縫安全地與 AWS IoT 提供的裝置網關和裝置影子協作。
- 裝置 SDK 支援 C、JavaScript 、Arduino、Java和Python。
- 裝置 SDK 包含開源庫、帶有示例的開發人員指南和移植指南,使用者根據硬體平台建構 IoT 産品或解決方案。
裝置網關
- AWS IoT 裝置網關支援裝置安全高效地與 AWS IoT 進行通信。裝置網關可以使用釋出/訂閱模式交換消息,進而支援一對一和一對多的通信。憑借此一對多的通信模式,AWS IoT 将支援互連裝置向多名給定主題的訂閱者廣播資料。
- 裝置網關支援 MQTT、WebSocket 和 HTTP 1.1 協定,也支援私有協定。
- 裝置網關可自動擴充,以支援 10 億多台裝置,而無需預配置基礎設施。
認證和授權
- AWS IoT 在所有連接配接點處提供互相身份驗證和加密。AWS IoT 支援 AWS 身份驗證方法(稱為"SigV4")以及基于身份驗證的 X.509 證書。使用 HTTP 的連接配接可以使用任一方法,使用 MQTT 的連接配接可以使用基于證書的身份驗證,使用 WebSockets 的連接配接可以使用 SigV4。
- 使用 AWS IoT 生成的證書以及由首選證書頒發機構 (CA) 簽署的證書,将所選的角色和/或政策映射到每個證書,以便授予裝置或應用程式通路權限,或撤消通路權限。
- 通過控制台或使用 API 建立、部署并管理裝置的證書和政策。這些裝置證書可以預配置、激活和與使用 AWS IAM 配置的相關政策關聯。
- AWS IoT 還支援使用者移動應用使用 Amazon Cognito 進行連接配接,Amazon Cognito 将負責執行必要的操作來為應用使用者建立唯一辨別符并擷取臨時的、權限受限的 AWS 憑證。
系統資料庫
- 系統資料庫将建立裝置辨別并跟蹤中繼資料,如裝置的屬性和功能。
- 系統資料庫向格式一緻的每台裝置配置設定唯一的辨別,而不管裝置的類型和連接配接方式為何。此外,它還支援描述裝置功能的中繼資料,例如傳感器是否報告溫度,以及資料是華氏度還是攝氏度。
- 系統資料庫存儲有關裝置的中繼資料,無需支付額外費用;并且需要每隔 7 天至少通路或更新系統資料庫條目一次,系統資料庫中的中繼資料就不會過期。
以JSON格式存儲的裝置系統資料庫資訊
裝置影子(Shadow)
- 裝置影子保留每台裝置的最後報告狀态和期望的未來狀态,即便裝置處于離線狀态。
- 通過 API 或使用規則引擎,擷取裝置的最後報告狀态或設定期望的未來狀态。
- 應用程式可以設定裝置的期望未來狀态,而無需說明裝置的目前狀态。AWS IoT 将比較期望未來狀态和最後報告狀态之間的差異,并指令裝置"彌補差異"。
- 裝置 SDK 能夠輕松地同步其狀态及其影子,并響應通過影子設定的期望的未來狀态。
- 裝置影子免費儲存設備狀态多達一年。如果至少每年更新一次狀态,則裝置影子将永久保留狀态;否則狀态将過期。
裝置影子(Shadow)流程
裝置影子(Shadow)格式
裝置影子(Shadow)服務
裝置影子服務使用MQTT話題,便于應用和裝置之間的通信,下面是相關的MQTT QoS 1話題:
$aws/things/{thingName}/shadow/update
$aws/things/{thingName}/shadow/get
$aws/things/{thingName}/shadow/delete
$aws/things/{thingName}/shadow/update/accepted
$aws/things/{thingName}/shadow/update/rejected
$aws/things/{thingName}/shadow/update/delta
$aws/things/{thingName}/shadow/get/accepted
$aws/things/{thingName}/shadow/get/rejected
$aws/things/{thingName}/shadow/delete/accepted
$aws/things/{thingName}/shadow/delete/rejected
裝置SDK(C-SDK、JS-SDK)将影子功能内置在裝置中,能夠使裝置與影子服務之間自動同步狀态。
規則引擎
- 規則引擎驗證釋出到 AWS IoT 的入站消息,并根據定義的業務規則轉換這些消息并将它們傳輸到另一台裝置或雲服務。規則可以應用至一台或多台裝置中的資料,并且它可以并行執行一個或多 個操作。
- 規則引擎還可以将消息路由到 AWS 終端節點,包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和内置 Kibana 內建的 Amazon Elasticsearch Service。外部終端節點可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 進行連接配接。
- 使用類似 SQL 的語句編寫規則。例如:如果溫度讀數超出特定門檻值,則它可以觸發規則以便将資料傳輸到 AWS Lambda;如果此溫度超出其他 5 台裝置的平均值 15%,則應采取措施。
- 規則引擎将提供數十個可用于轉換資料的可用功能,并且可以通過 AWS Lambda 建立無限個功能。例如,如果正在處理各種不同的數值,則可以取傳入數字的平均值。規則還會觸發在 AWS Lambda 中執行 Java、Node.js 或 Python 代碼,進而提供最高靈活度以及處理裝置資料的能力。
規則引擎內建其它雲服務
規則引擎驗證釋出至AWS IoT的消息請求,基于業務規則轉換消息請求并釋出至其它服務,例如:
- 富集化或過濾從裝置收集的資料
- 将裝置資料寫入一個亞馬遜DynamoDBm資料庫
- 儲存檔案至亞馬遜S3
- 發送一個推送通知到所有亞馬遜SNS使用者
- 向亞馬遜SQS隊列釋出資料
- 調用Lambda函數抽取資料
- 使用亞馬遜Kinesis處理大量的裝置消息資料
- 發送資料至亞馬遜Elasticsearch服務
- 捕獲一條CloudWatch測量資料
- 更新一條CloudWatch告警
- 把一條MQTT消息資料發送至亞馬遜機器學習服務,基于亞馬遜機器學習模型進行預測
規則引擎&實時流式資料處理
N:1 入站的傳感器流式資料(資料降噪)
規則引擎過濾、轉換、彙總傳感器資料後,發送至亞馬遜Kinesis處理實時流式資料
Kinesis流式資料共享至其它業務系統
将流式資料的實時處理結果導入至資料庫、應用或其它亞馬遜服務
規則引擎&推送通知服務
推送通知
支援蘋果APNS推送通知服務、谷歌GCM雲消息服務、亞馬遜ADM裝置消息服務,微軟WNS推送服務
亞馬遜SNS推送通知服務->HTTP協定終端(短信、郵件)
通過亞馬遜SNS推送通知服務,調用第三方HTTP協定終端,支援訂閱和重試
規則引擎示例 – 使用機器學習預測函數
{ "sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23-beta", "actions": [{ "republish": { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "topic": "my-mqtt-topic" } }] } |
上面是使用亞馬遜機器學習預測函數machinelearning_predict 的規則示例,其含義是:
如果機器學習預測函數處理MQTT消息後的結果是分類1,那麼重新将此消息釋出至一個話題。
裝置管理
- 支援全球或部分地區的固件更新
- 規則引擎在DynamoDBm資料庫跟蹤更新狀态和進度
- 系統資料庫儲存設備的固件版本
S3管理固件分發版本
在S3中組織和保障和固件二進制檔案
消息代理使用話題模式通知裝置分組
通知裝置分組固件更新資訊,包括S3中的固件二進制檔案URL位址
AWS IoT平台接口
- AWS Command Line Interface (AWS CLI)
- 在Windows、Mac和Linux執行AWS IoT指令
- AWS SDKs
- 使用特定語言API開發IoT應用
- AWS IoT API
- 使用HTTP或者HTTPS請求開發IoT應用
- AWS IoT Thing SDK for C
- 在資源受限的裝置上開發IoT應用,如MCU
AWS IoT監控工具
自動化監控工具
- Amazon CloudWatch Alarms
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- AWS CloudTrail Log Monitoring
手工監控工具
- AWS IoT 儀表盤
- 證書
- 政策
- 規則
- 裝置
- CloudWatch首頁
- 目前告警和狀态
- 告警和資源圖表
- 服務健康度
- CloudWatch
- 自定義儀表盤
- 自定義圖表進行排障和監控趨勢
- 搜尋所有AWS資源名額
- 建立和修改告警參數
AWS IoT 初學者工具包
- AWS IoT 初學者工具包旨在幫助進行原型開發和安全地連接配接 AWS IoT。
- 工具包内含開發微控制器開發闆、傳感器和執行器、AWS IoT 裝置 SDK 以及入門指南。
AWS IoT 初學者工具包 - 支援的平台
AWS IoT生态
開發示例 - AWS IoT 按鈕
建立裝置
裝置屬性
建立證書
激活證書
建立政策
綁定證書與政策
綁定證書與裝置
配置裝置
使用MQTT用戶端訂閱裝置消息
使用MQTT用戶端檢視裝置消息
建立短信推送話題并訂閱此話題
建立規則
建立規則的行為