AWS IoT Greengrass
Greengrass主要是用于边缘计算或者机器学习有关,对于详细了解请阅读结尾处的官方文档,文档内容也较为丰富。
目录
- AWS IoT Greengrass
- 一、AWS IoT Greengrass V1
- 1. 概述
- 2. 功能
- 3. 基本架构
- 4. 相关角色功能
- 5. 主要组件
- 二、AWS IoT Greengrass V2
- 1. 概述
- 2. 基本架构
- 4. 相关角色功能
- 三、AWS IoT Greengrass V1-V2相异点
- 1. V2 New
- 2. 差异
- 四、官方文档
- 一、AWS IoT Greengrass V1
作者:晨星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 (注意:注册需要有信用卡,注册成功后会赠送一年的云服务器)
作者:晨星1032