AWS IoT Greengrass是什么?它的两个版本是什么内容么?两个版本间的差异又是什么?
Greengrass主要是用于边缘计算或者机器学习有关,能够将 AWS 云功能扩展到本地设备,目前最新版本是V2,但其入门门槛相对高些,可以先通过了解V1进行熟悉。同时亚马逊官方文档内容丰富,可以在文章结尾处进行链接查看。
AWS IoT Greengrass
? Greengrass主要是用于边缘计算或者机器学习有关,对于详细了解请阅读结尾处的官方文档,文档内容也较为丰富。
目录
- AWS IoT Greengrass
- 一、AWS IoT Greengrass V1
- 1. 概述
- 2. 功能
- 3. 基本架构
- 4. 相关角色功能
- 5. 主要组件
- 二、AWS IoT Greengrass V2
- 三、AWS IoT Greengrass V1-V2相异点
- 四、官方文档
一、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. 相关角色功能
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. 相关角色功能
三、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 (注意:注册需要有信用卡,注册成功后会赠送一年的云服务器)