Building IoT Backends

Post on 21-Jan-2018

694 views 4 download

Transcript of Building IoT Backends

©2015, Amazon Web Services, Inc. 或其附屬公司。保留所有權利。

Jhen-Wei Huang 黃振維

Solutions Architect

2017 年 07 月 06 日

基礎:運用 AWS IoT 與 AWS Lambda 建置物聯網 (IoT)後端的最佳實務

贊助廠商

AWS IoT概觀AWS IoT Button與Lambda建置運作示範

今天的網路研討會內容

AWS IoT:可讓連線裝置輕鬆安全地與雲端應用程式進行互動

從裝置擷取和篩選資料,並根據自訂的規則來進行動作

安全地連線,並涵跨多個網路管理任一實體裝置

建置能夠隨時與裝置進行可靠互動的 web 應用程式

裝置 網路 安全性 資料收集 智慧

連結數十億的裝置 輕量型通訊協定 X509 憑證 DynamoDB、Kinesis 和 S3

觸發 Lambda 功能

1 2 3

裝置 SDK一套用戶端程式庫,可用來進行連線、驗證和交換訊息

裝置閘道透過 MQTT 與 HTTP

來和裝置進行通訊

身分驗證透過相互驗證與加密

機制來確保安全

規則引擎根據規則來轉換訊息,

並轉傳至 AWS 服務

AWS 服務- - - - -

3P 服務

影子間歇連線期間的持續物件狀態

應用程式

AWS IoT API

登錄檔找出並管理您的物件

AWS IoT:運作方式

安全性與身份

身分驗證透過相互驗證與加密

機制來確保安全

安全性與身份

TLS交互身份驗證利用政策來建立精細分級的許可權限標準Web安全性

裝置閘道

裝置閘道透過 MQTT 與 HTTP

來和裝置進行通訊

裝置閘道 (Device Gateway)

標準通訊協定 – MQTT / HTTP裝置的AWS前端可擴展的預設即提供安全連線 – X509憑證,TLS 1.2

主題式架構building3/chillers/unit5building3/pickers/unit9building1/chillers/unit1

裝置登錄檔 (Registry)

登錄檔找出並管理您的物件

裝置登錄檔 (Registry)

裝置影子 (Device Shadows)

影子間歇連線期間的持續物件狀態

應用程式

裝置影子 (Device Shadows)

裝置影子 (Device Shadows) {“state” : {

“desired” : {“engine” : “ON”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“reported” : {

“engine” : “OFF”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},

“version” : 10}

裝置影子 (Device Shadows) {“state” : {

“desired” : {“engine” : “ON”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“reported” : {

“engine” : “OFF”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“delta” : {

“engine” : “ON”} },

“version” : 10}

“engine” : “ON”

裝置影子 (Device Shadows) {“state” : {

“desired” : {“engine” : “ON”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“reported” : {

“engine” : “OFF”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“delta” : {

“engine” : “ON”} },

“version” : 10}

“engine” : “OFF”

裝置影子 (Device Shadows) {“state” : {

“desired” : {“engine” : “ON”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“reported” : {

“engine” : “OFF”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“delta” : {

“engine” : “ON”} },

“version” : 10}

“engine” : “ON”

裝置影子 (Device Shadows) {“state” : {

“desired” : {“engine” : “ON”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},“reported” : {

“engine” : “ON”,“tires” : {

“LF” : 40,“RF” : 38,“LR” : 37,“RR” : 39

},“CCD” : {

“A” : 0,“B” : 8,“C” : 7,“D” : 9

}},

“version” : 10}

“engine” : “ON”

規則引擎 (Rules Engine)

規則引擎根據規則來轉換訊息,

並轉傳至 AWS 服務

AWS 服務- - - - -

3P 服務

綜合評估:回應一組而非一個。提供數十種函數 ()

多項/同時動作:有時候某個狀況會需要採取多項動作

簡單、熟悉的語法

- 用來定義篩選主題的 SQL 語句

- 選擇性使用的 WHERE 子句

- 進階 JSON 支援

改善訊號的功能:雜訊

- 字串處理 (regex 支援)

- 數學運算

- 加密支援

- UUID、時間戳記、rand 等

規則引擎 (Rules Engine)

規則引擎 (Rules Engine)

規則引擎連結AWS IoT到

AWS服務 (AWS Services)以及

外部服務 (External Endpoints)

1. AWS Services(Direct Integration)

2. Rest of AWS(via Amazon Kinesis, Lambda, S3, and more)

3. External Endpoints(via Lambda and SNS)

規則引擎 (Rules Engine)

規則引擎 (Rules Engine)

AWS Lambda:可執行您的程式碼以回應事件的運算服務

Lambda 功能:無狀態、觸發式的程式碼執行

由事件觸發:

• 直接同步與非同步呼叫

• 上傳至 Amazon S3 儲存貯體

• API 閘道呼叫

• 及更多其他事件...

讓下列工作變得容易

• 建置可執行大量作業的後端服務

• 執行資料驅動的稽核、分析與通知

持續擴展不需管理伺服器

AWS Lambda 會執行程式碼來回應每個觸發事件,自動擴充您的應用程式。您的程式碼會同時個別執行和處理每個觸發事件,根據工作負

載的大小精確調整規模。

次秒級計量

使用 AWS Lambda 時,是以程式碼的執行時間 (每 100 毫秒計算)

和觸發次數計費。如果程式碼未執行就不需付費。

AWS Lambda 會自動執行程式碼,您無需佈建或管理伺服器。只需撰寫程式

碼並上傳至 Lambda 即可。

運用 AWS Lambda 來建置行動後端的優勢

1 2 3

Getting Startedwith AWS IoT

Blog and Forumsfor AWS IoT

GithubAWS IoT Device SDK

開始使用AWS IoT

入門套件

AWS IoT 按鈕 — AWS IoT 的「Hello World」(簡單的可編程裝置)

• 採用 Amazon Dash 按鈕的硬體(無狀態 Wi-Fi 按鈕)

• 程式碼位於雲端上;不需撰寫裝置特定的程式碼或進行更新

• 了解規則、影子和主題

https://aws.amazon.com/iotbutton/

今天的示範工作流程:從 AWS IoT 到 AWS Lambda 到Amazon SNS

Lambda 功能

規則引擎

SNS 主題

私密金鑰與憑證

物件/裝置

SDK

AWS 服務

執行角色 政策許可政策 規則

AWS IoT

Action

Select * from ‘iotbutton/+’

AWS IoT Button 入門

• 行動應用程式

• Lambda藍圖精靈1. 在 IoT Type 下拉式選單中選擇

「IoT Button」。2. 輸入您的裝置序號 (DSN)。你可

以在裝置背面找到 DSN。3. 按照步驟來設定您的 AWS IoT

Button,以連接到 Wi-Fi 和 AWS IoT。

4. 繼續進行精靈中的步驟,並更新範例 Lambda 函數。在程式碼編輯器中輸入您的電子郵件。

5. 開始按一下! AWS IoT Button 入門: https://aws.amazon.com/tw/iotbutton/getting-started/AWS IoT Button Wizard Quickstart:http://docs.aws.amazon.com/iot/latest/developerguide/iot-button-lambda.html

範本程式碼:使用 Amazon Kinesis 和AWS Lambda 的行動後端

https://github.com/awslabs/lambda-refarch-iotbackend

參考架構:使用 Amazon Kinesis 和AWS Lambda 的 IoT 後端

https://s3.amazonaws.com/awslambda-reference-architectures/iot-backend/lambda-refarch-iotbackend.pdf

AWS IoT:可讓連線裝置輕鬆安全地與雲端應用程式進行互動

從裝置擷取和篩選資料,並根據自訂的規則來進行動作

安全地連線,並涵跨多個網路管理任一實體裝置

建置能夠隨時與裝置進行可靠互動的 web 應用程式

裝置 網路 安全性 資料收集 智慧

連結數十億的裝置 輕量型通訊協定 X509 憑證 DynamoDB、Kinesis 和 S3

觸發 Lambda 功能

1 2 3

三個後續步驟

1. 將您的 IoT 裝置連線至 AWS IoT,或購買其中一種 AWS IoT 硬體入門套件,開始使用。只要在 AWS 管理主控台中點選,就能制定裝置政策與規則,讓您輕鬆安全地將裝置連線到雲端,並從後端服務存取資料、商業邏輯或功能。

2. 建立並測試您的第一個 Lambda 功能。您不需學習任何新語言、工具或架構,即可採用 AWS Lambda。您可以使用任何第三方程式庫,甚至是原生程式庫。每個月的前1 百萬次功能呼叫免費!

3. 選擇 Lambda 做為您 IoT 裝置的規則動作… 利用範本程式碼和設定說明,快速建置您第一個使用 AWS IoT 和 AWS Lambda 的 IoT 裝置後端。

感謝您!

請造訪 http://aws.amazon.com/iot、AWS 部落格及 AWS IoT 論壇,以進一步了解並開始使用AWS IoT。

請造訪 http://aws.amazon.com/lambda、AWS Compute 部落格及 Lambda 論壇,以進一步了解並開始使用 Lambda。

Remember to complete your evaluations!