AWS IoT Greengrass
Greengrass主要是用於邊緣計算或者機器學習有關,對於詳細瞭解請閱讀結尾處的官方文檔,文檔內容也較爲豐富。html
1、AWS IoT Greengrass V1
1. 概述
AWS Greengrass 是一種軟件,用於將 AWS 雲功能擴展到本地設備,使得本地設備能夠更靠近信息源來收集和分析數據,同時在本地網絡上安全地相互通訊。更具體來講,使用 AWS Greengrass 的開發人員能夠在雲中編寫無服務器代碼 (AWS Lambda 函數),而後方便地將其部署到設備以在本地執行應用程序。在 AWS Greengrass 中,設備可在本地網絡上安全地通訊並互相交換消息而沒必要鏈接到雲。linux
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. 相關角色功能
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 函數中 |
2、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. 相關角色功能
3、AWS IoT Greengrass V1-V2相異點
1. V2 New
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 容器的組件
4、官方文檔