AWS IoT Greengrass
Greengrass主要是用於邊緣計算或者機器學習有關,對於詳細了解請閱讀結尾處的官方文檔,文檔內容也較為豐富。
作者:晨星1032
一、AWS IoT Greengrass V1
1. 概述
AWS Greengrass 是一種軟件,用於將 AWS 雲功能擴展到本地設備,使得本地設備可以更靠近信息源來收集和分析數據,同時在本地網絡上安全地相互通信。更具體來說,使用 AWS Greengrass 的開發人員可以在雲中編寫無服務器代碼 (AWS Lambda 函數),然后方便地將其部署到設備以在本地執行應用程序。在 AWS Greengrass 中,設備可在本地網絡上安全地通信並互相交換消息而不必連接到雲。
2. 功能
- Lambda 運行時:可以將雲上創建的 Lambda 函數部署到 Greengrass Core 上並使其運行。Lambda 函數可以和邊緣物聯網設備,以及雲服務進行交互。
- 影子設備:為邊緣物聯網設備提供 Device Shadow 服務,類似雲上 Device Shadow 服務。可以通過更新和查詢設備的影子,來獲取和修改設備的狀態。
- 消息管理器:支持 Greengrass 組中的物聯網設備之間的通信,以及與 Lambda 函數、設備影子服務之間通信。影子數據可以只保存在本地(Local Shadow),也可以同步到雲上。
- 組管理: 管理 Greengrass Group,一個 group 為一個獨立的邊緣物聯網環境。
- 發現服務:物聯網設備可以通過連接到IoT雲服務,然后通過 Discovery 功能來發現 Greengrass Core,從而與之通信。
- 無線更新代理:可以遠程更新 Greengrass Core 軟件。
- 本地資源訪問:支持 Greengrass Core 上的 Lambda 函數訪問本地資源,比如樹莓派的GPIO,本地視頻攝像頭等。
- 機器學習推理:支持將雲上 ML 機器學習推理功能部署到Greengrass Core。
3. 基本架構
- 若干本地設備和一個Greengrass Core (GGC)組成一個 Greengrass 組。與 AWS Greengrass Core 通信的所有設備都必須是 Greengrass 組的成員。每個組都必須包含 AWS Greengrass Core (似乎一個組只能有一個 GGC)。Discovery API 使設備能夠檢索連接到 AWS Greengrass Core (與設備位於同一 Greengrass 組中) 所需的信息。
- 本地設備和 Greengrass Core 通過本地網絡通信,可以不用訪問雲(Discovery Service 需要設備在啟動時連接到雲上獲取到 GG Core 的連接信息)。設備上必須安裝 AWS IoT Device SDK。
- Greengrass 可以和雲通信,需要有互聯網訪問能力。
- 可以在 Greengrass Core 上運行 Lambda 函數,這些函數可以和設備之間通信,也可以和雲通信。
- 雲上的配置、Lambda 函數以及機器學習模版通過 『Deploy』 被安裝到 Greengrass Core 上。Greengrass Core 上有一個部署代理,它在接到通知后,從雲上獲取待部署材料,然后在 Greengrass Core 上進行部署。
- 組中設備連接到GGC 的過程:
- AWS IoT 設備使用其設備證書、私有密鑰和 AWS IoT 根 CA 連接到 Greengrass 雲服務。
- 連接后,AWS IoT 設備將使用 Greengrass Discovery Service 查找其 AWS Greengrass 核心設備的 IP 地址。該設備還可下載組的根 CA 證書,該證書可用於對 Greengrass 核心設備進行身份驗證。
- AWS IoT 設備嘗試連接到 AWS Greengrass Core,並傳遞其設備證書和客戶端 ID。如果客戶端 ID 與設備的事物名稱匹配並且證書有效,則將進行連接。否則,將終止連接。
4. 相關角色功能
-
AWS IoT Core
-
AWS IoT Core 是一款托管的雲服務,讓互聯設備與雲應用程序及其他設備交互。AWS IoT Core 可以支持數十億台設備和數萬億條消息,並且可以對這些消息進行處理並將其安全可靠地路由至 AWS 終端節點和其他設備。借助 AWS IoT Core,應用程序可以隨時跟蹤所有設備並與其通信。
-
借助 AWS IoT Core,還可以使用一系列 Amazon 服務來構建 IoT 應用程序,以便收集、處理和分析互聯設備生成的數據並據之采取行動。
-
同時也提供控制台配置 Greengrass,從而簡化開發和部署過程。Greengrass組內本地設備Lambda等初始化時需要先與雲連接獲取Greengrass Core的信息,之后可以通過本地網絡通信可與雲網絡斷開。
-
遠程監控的作用
-
-
AWS IoT Greengrass
GreenGrass則彌補上了AWS雲和IoT設備之間的中間段,主要處理的就是邊緣計算這一部分,尤其在和AWS雲服務中斷同時也能夠繼續運行,甚至可以在邊緣設別上繼續執行Lambda應用
- AWS IoT Greengrass Core
- 可以執行AMS Lambda,進行消息傳輸,設備遮蔽(device shadows),安全性保護以及和雲端進行通訊
- Lambda
- Greengrass 可將 Lambda 函數擴展到邊緣站點。Lambda 函數是按需運行或者無限運行的小應用程序。可以使用本地 Lambda 函數脫機響應設備
- Lambda 函數使用 AWS IoT Greengrass Core 開發工具包與 AWS IoT Greengrass Core 進行本地交互。允許已部署的 Lambda 函數與 AWS IoT Core 交換 MQTT 消息、與 Greengrass 組中的連接器、設備及其他 Lambda 函數交換 MQTT 消息等
- 也可以處理篩選設備數據,然后再將數據傳輸到雲
- Device
- 設備通過AWS IoT 設備開發工具包用於和Greengrass Core通訊,發布和接受Greengrass的消息。
- 通常IoT設備都不是獨立工作,各個設備之間能夠通訊和協作,同時不同的Greengrass Core之間也可以協作
- AWS IoT Greengrass Core
5. 主要組件
AWS IoT Greengrass 由一種雲服務和三個適用於 IoT 設備的軟件發行版組成:AWS IoT Greengrass Core、AWS IoT 設備開發工具包和 AWS IoT Greengrass 開發工具包
用途 | 運行位置 | |
---|---|---|
AWS IoT Greengrass Core | 提供本地服務(計算、消息收發、狀態、安全),並在本地與運行 AWS IoT 設備開發工具包的設備通信 | 運行通用操作系統(如 Linux)、基於 CPU 的 64 位設備(x86 或 Arm)。 |
AWS IoT 設備開發工具包(aws-iot-device-sdk) | 允許設備與 AWS IoT Greengrass Core 在本地交互 | 幾乎所有支持 C++ 或 Python 2.7 和 3.7 的設備。同時包含在 FreeRTOS 中 |
AWS IoT Greengrass 開發工具包(aws-greengrass-core-sdk) | 允許 Lambda 函數與 AWS IoT Greengrass Core 中的本地服務進行交互 | 在部署到 AWS IoT Greengrass Core 的 Lambda 函數中 |
二、AWS IoT Greengrass V2
1. 概述
AWS IoT Greengrass V2是開源的物聯網邊緣運行時和雲服務,可幫助您在設備上構建,部署和管理IoT應用程序。AWS IoT Greengrass使您的設備可以在更接近數據生成位置的地方收集和分析數據,對本地事件進行自動響應,並與局域網上的其他設備進行安全通信。Greengrass設備還可以與AWS IoT Core安全通信,並將IoT數據導出到AWS Cloud。您可以使用AWS IoT Greengrass使用稱為組件的預構建軟件模塊來構建邊緣應用程序,這些模塊可以將邊緣設備連接到AWS服務或第三方服務。您還可以使用AWS IoT Greengrass使用Lambda函數、Docker容器、本地操作系統進程、或者自定義運行時等。
2. 基本架構
- AWS IoT Greengrass client software(aws-greengrass-nucleus),運行在基於 linux 的發行版上。通過 AWS IoT Greengrass,你可以編程設備對它們產生的數據進行本地操作,運行基於機器學習模型的預測,過濾和聚合設備數據。可以在本地執行 AWS Lambda 函數、 Docker 容器、本地操作系統進程或自定義運行時。
- AWS IoT Greengrass 提供了預先構建的軟件模塊,稱為組件,可以輕松擴展邊緣設備功能。AWS 的 IoT Greengrass 組件能夠連接到 AWS 服務和邊緣的第三方應用程序。在開發完物聯網應用程序之后,AWS IoT Greengrass 可以遠程部署、配置和管理這些應用程序。
4. 相關角色功能
-
Greengrass core device
- 一個運行AWS IoT Greengrass Core軟件的設備。Greengrass core device是 AWS 的物聯網事物。可以將多個核心設備添加到 AWS 的物聯網事物組中,創建 Greengrass core設備組
-
AWS IoT Greengrass Core software
-
安裝在核心設備上的所有 AWS 物聯網軟件的超集。Greengrass Core software由以下幾部分組成:
-
Nucleus
所需的組件包括 Greengrass Core software的最低功能。該核心管理其他組件的部署、編制和生命周期管理。它也促進了 AWS 物聯網組件之間的進程間通信
-
Optional components
AWS 提供的可配置組件,可以在邊緣設備上增加額外功能。根據自身需求可以選擇要部署到設備的可選組件,例如數據流、本地機器學習推理或本地命令行界面等
-
-
-
Greengrass component
- 部署在 Greengrass 核心設備上並在其上運行的軟件模塊。所有與 AWS IoT Greengrass一起開發和部署的軟件都是作為一個組件建模的。AWS IoT Greengrass 提供了預先構建的公共組件,它們提供可以在應用程序中使用的特性和功能。還可以在本地設備或雲中開發自己的定制組件。在開發了一個定制組件之后,可以使用 AWS IoT Greengrass雲服務將其部署到單核或多核設備上。您可以創建自定義組件並將該組件部署到核心設備
三、AWS IoT Greengrass V1-V2相異點
1. V2 New
- 開源,github:https://github.com/aws-greengrass
- 模塊化,可根據實際資源用途等添加/刪除預構建的軟件組件
- 新的本地開發工具,可本地開發和調試應用程序
- 改進的應用部署
2. 差異
- 組和部署方式
- V1中,一個組定義了一個核心設備,該核心設備的設置和軟件以及連接到該核心設備的AWS IoT列表
- V2中,可以使用部署來定義在核心設備上運行的軟件組件和配置,每個部署都針對單個核心設備或可以包含多個核心設備的AWS IoT事物組
- Core software和連接器
- V1中,AWS IoT Greengrass Core軟件是一個軟件包,其中包含該軟件及其所有功能。AWS IoT Greengrass連接器是您部署到AWS IoT Greengrass V1核心設備的模塊
- V2中,AWS IoT Greengrass Core軟件是模塊化的,因此可以選擇安裝內容以控制內存占用量。Greengrass nucleus component是處理其他組件的部署,業務流程和生命周期管理的AWS IoT Greengrass Core軟件的最低必需安裝。流管理器,秘密管理器和日志管理器等功能是僅在需要這些功能時才部署的組件。AWS IoT Greengrass V2還提供了一些AWS IoT Greengrass V1連接器作為組件
- Lambda函數
- V1中,Lambda 函數定義了在核心設備上運行的軟件。在每個 Greengrass 組中,定義該函數使用的訂閱和本地資源
- V2中,組件是在核心設備上運行的軟件。組件可以由任何軟件組成,每個組件都有一個配方,定義組件的元數據、參數、依賴項和腳本,以便在組件生命周期的每個步驟中運行
- Subscriptions
- V1中,訂閱指定 Lambda 函數接收事件消息的位置作為函數有效負載。功能訂閱本地發布/訂閱消息和 AWS 物聯網核心 MQTT 消息
- V2中,組件管理自己對本地發布/訂閱和 AWS 的 IoT Core MQTT 消息的訂閱。在組件配方中,定義授權策略以指定組件可以使用哪些主題進行通信。在組件代碼中,您可以為本地發布/訂閱消息和 AWS IoT Core MQTT 消息使用進程間通信(IPC)
- 本地資源
- V1中,Lambda 函數運行在容器中,可以配置這些容器來訪問核心設備文件系統中的卷和設備
- V2中,組件運行在容器之外,因此不需要指定組件可以訪問哪些本地資源。可以開發直接使用核心設備上的本地資源的組件。還可以開發運行 Docker 容器的組件
四、官方文檔
- V1版本:https://docs.aws.amazon.com/zh_cn/greengrass/latest/developerguide/what-is-gg.html
- V2版本:https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html (英文版)
- AWS IoT Greengrass Github:https://github.com/aws-greengrass
- 使用需要進行登錄:https://console.aws.amazon.com/console/home (注意:注冊需要有信用卡,注冊成功后會贈送一年的雲服務器)