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、官方文档