Building IoT Backends

50
Jhen-Wei Huang 黃振維 Solutions Architect 2017 07 06 基礎:運用 AWS IoT AWS Lambda 建置物聯網 (IoT) 後端的最佳實務

Transcript of Building IoT Backends

Page 1: Building IoT Backends

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

Jhen-Wei Huang 黃振維

Solutions Architect

2017 年 07 月 06 日

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

Page 2: Building IoT Backends

贊助廠商

Page 3: Building IoT Backends
Page 4: Building IoT Backends

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

今天的網路研討會內容

Page 5: Building IoT Backends

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

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

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

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

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

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

觸發 Lambda 功能

1 2 3

Page 6: Building IoT Backends

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

裝置閘道透過 MQTT 與 HTTP

來和裝置進行通訊

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

機制來確保安全

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

並轉傳至 AWS 服務

AWS 服務- - - - -

3P 服務

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

應用程式

AWS IoT API

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

AWS IoT:運作方式

Page 7: Building IoT Backends

安全性與身份

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

機制來確保安全

Page 8: Building IoT Backends

安全性與身份

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

Page 9: Building IoT Backends

裝置閘道

裝置閘道透過 MQTT 與 HTTP

來和裝置進行通訊

Page 10: Building IoT Backends

裝置閘道 (Device Gateway)

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

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

Page 11: Building IoT Backends

裝置登錄檔 (Registry)

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

Page 12: Building IoT Backends

裝置登錄檔 (Registry)

Page 13: Building IoT Backends

裝置影子 (Device Shadows)

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

應用程式

Page 14: Building IoT Backends

裝置影子 (Device Shadows)

Page 15: Building IoT Backends

裝置影子 (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}

Page 16: Building IoT Backends

裝置影子 (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”

Page 17: Building IoT Backends

裝置影子 (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”

Page 18: Building IoT Backends

裝置影子 (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”

Page 19: Building IoT Backends

裝置影子 (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”

Page 20: Building IoT Backends

規則引擎 (Rules Engine)

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

並轉傳至 AWS 服務

AWS 服務- - - - -

3P 服務

Page 21: Building IoT Backends

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

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

簡單、熟悉的語法

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

- 選擇性使用的 WHERE 子句

- 進階 JSON 支援

改善訊號的功能:雜訊

- 字串處理 (regex 支援)

- 數學運算

- 加密支援

- UUID、時間戳記、rand 等

規則引擎 (Rules Engine)

Page 22: Building IoT Backends

規則引擎 (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)

Page 23: Building IoT Backends

規則引擎 (Rules Engine)

Page 24: Building IoT Backends

規則引擎 (Rules Engine)

Page 25: Building IoT Backends

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

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

由事件觸發:

• 直接同步與非同步呼叫

• 上傳至 Amazon S3 儲存貯體

• API 閘道呼叫

• 及更多其他事件...

讓下列工作變得容易

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

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

Page 26: Building IoT Backends

持續擴展不需管理伺服器

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

載的大小精確調整規模。

次秒級計量

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

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

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

碼並上傳至 Lambda 即可。

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

1 2 3

Page 27: Building IoT Backends

Getting Startedwith AWS IoT

Blog and Forumsfor AWS IoT

GithubAWS IoT Device SDK

開始使用AWS IoT

Page 28: Building IoT Backends

入門套件

Page 29: Building IoT Backends

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

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

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

• 了解規則、影子和主題

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

Page 30: Building IoT Backends

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

Lambda 功能

規則引擎

SNS 主題

私密金鑰與憑證

物件/裝置

SDK

AWS 服務

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

AWS IoT

Action

Select * from ‘iotbutton/+’

Page 31: Building IoT Backends

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

Page 32: Building IoT Backends
Page 33: Building IoT Backends
Page 34: Building IoT Backends
Page 35: Building IoT Backends
Page 36: Building IoT Backends
Page 37: Building IoT Backends
Page 38: Building IoT Backends
Page 39: Building IoT Backends
Page 40: Building IoT Backends
Page 41: Building IoT Backends
Page 42: Building IoT Backends
Page 43: Building IoT Backends
Page 44: Building IoT Backends

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

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

Page 45: Building IoT Backends

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

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

Page 46: Building IoT Backends

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

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

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

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

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

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

觸發 Lambda 功能

1 2 3

Page 47: Building IoT Backends

三個後續步驟

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

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

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

Page 48: Building IoT Backends

感謝您!

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

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

Page 49: Building IoT Backends
Page 50: Building IoT Backends

Remember to complete your evaluations!