本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS IoT Greengrass 的工作原理
AWS IoT Greengrass 客户端软件,也称为 AWS IoT Greengrass Core 软件,可在 Windows 和基于 Linux 的发行版(例如 Ubuntu 或 Raspberry Pi 操作系统)上运行,适用于采用 ARM 或 x86 架构的设备。借助 AWS IoT Greengrass,您可以对设备进行编程,使其根据生成的数据进行本地操作,基于机器学习模型运行预测,并筛选和聚合设备数据。AWS IoT Greengrass 支持在本地执行您选择的 AWS Lambda 函数、Docker 容器、本机操作系统进程或自定义运行时。
AWS IoT Greengrass 提供称为组件的预建软件模块,可让您轻松扩展边缘设备功能。AWS IoT Greengrass 组件使您能够在边缘连接到 AWS 服务和第三方应用程序。在开发 IoT 应用程序后,AWS IoT Greengrass 使您能够在现场的设备实例集上远程部署、配置和管理这些应用程序。
以下示例显示了 AWS IoT Greengrass 设备如何与 AWS IoT Greengrass 云服务以及 AWS 云 中的其他 AWS 服务进行交互。
AWS IoT Greengrass 的重要概念
以下是理解和使用 AWS IoT Greengrass 的基本概念:
- AWS IoT 事物
-
AWS IoT 事物是特定设备或逻辑实体的表示形式。事物的相关信息存储在 AWS IoT 注册表中。
- Greengrass 核心设备
-
运行 AWS IoT Greengrass Core 软件的设备。Greengrass 核心设备是 AWS IoT 事物。您可以将多个核心设备添加到 AWS IoT 事物组中,以创建和管理 Greengrass 核心设备组。有关更多信息,请参阅 设置 AWS IoT Greengrass 核心设备。
- Greengrass 客户端设备
-
通过 MQTT 连接到 Greengrass 核心设备并与之通信的设备。Greengrass 客户端设备是 AWS IoT 事物。核心设备可以处理、筛选和聚合来自与其连接的客户端设备的数据。您可以将核心设备配置为在客户端设备、AWS IoT Core 云服务和 Greengrass 组件之间中继 MQTT 消息。有关更多信息,请参阅 与本地 IoT 设备交互。
客户端设备可以运行 FreeRTOS,也可以使用 AWS IoT Device SDK或 Greengrass Discovery API 来获取有关客户端设备可以连接到的核心设备的信息。
- Greengrass 组件
-
部署到 Greengrass 核心设备并在该设备上运行的软件模块。使用 AWS IoT Greengrass 开发和部署的所有软件都建模为组件。AWS IoT Greengrass 提供了预先构建的公有组件,这些组件提供了可在应用程序中使用的特征和功能。您还可以在本地设备或云中开发自己的自定义组件。开发自定义组件后,您可以使用 AWS IoT Greengrass 云服务将其部署到单个或多个核心设备。您可以创建自定义组件并将该组件部署到核心设备。当您执行此操作时,核心设备会下载以下资源来运行该组件:
-
配方:JSON 或 YAML 文件,可通过定义组件详细信息、配置和参数来描述软件模块。
-
构件:源代码、二进制文件或脚本,可定义将在设备上运行的软件。您可以从头开始创建构件,也可以使用 Lambda 函数、Docker 容器或自定义运行时创建组件。
-
依赖关系:组件之间的关系,使您可以执行自动更新或重新启动依赖组件。例如,您可以拥有依赖于加密组件的安全消息处理组件。这样可以确保加密组件的任何更新都会自动更新并重新启动消息处理组件。
有关更多信息,请参阅AWS 提供的组件和开发 AWS IoT Greengrass 组件。
-
- 部署
-
发送组件并将所需组件配置应用于目标设备的过程,目标设备可以是单个 Greengrass 核心设备或一组 Greengrass 核心设备。部署会自动将任何更新的组件配置应用于目标,并包括定义为依赖关系的任何其他组件。您也可以克隆现有部署以创建使用相同组件但部署到不同目标的新部署。部署是连续的,这表示您对部署的组件或组件配置所做的任何更新都会自动发送到所有目标。有关更多信息,请参阅 将 AWS IoT Greengrass 组件部署到设备。
- AWS IoT Greengrass Core 软件
-
从版本 2.14 开始,AWS IoT Greengrass 对其设备运行时提供了两个替代实现方案,运行时是一种称为 Nucleus 的可执行文件。第一个(以前也是唯一的)Nucleus 是用 Java 实现的。该选项提供了最大的跨架构和操作系统可移植性。但是,它还依赖于 Java 虚拟机,因此会占用大量内存。
第二个新增的 Nucleus 是用 C 实现的。该选项大大减小了其内存占用。但是,它需要分别针对不同的目标架构和操作系统进行分发(或从源代码编译)。当需要区分两者时,我们将第一个实现称为 Nucleus Classic,并将后者称为 Nucleus Lite。
-
可选组件:这些可配置组件由 AWS IoT Greengrass 提供,可在边缘设备上启用其他功能。根据您的要求,您可以选择要部署到设备上的可选组件,例如数据流、本地机器学习推理或本地命令行界面。有关更多信息,请参阅 AWS 提供的组件。
您可以通过在设备上部署新版本的组件来升级 AWS IoT Greengrass Core 软件。
-
AWS IoT Greengrass的特征
AWS IoT Greengrass Version 2 包含以下元素:
-
软件分发
-
Greengrass Nucleus 组件,这是 AWS IoT Greengrass Core 软件的最小安装。此组件管理 Greengrass 组件的部署、编排和生命周期管理。
-
与服务、协议和软件集成的其他可选的 AWS 提供的组件。
-
Greengrass 开发工具,可用于创建、测试、构建、发布和部署自定义 Greengrass 组件。
-
AWS IoT Device SDK,其中包含用于自定义 Greengrass 组件的进程间通信(IPC)库,以及用于客户端设备的 Greengrass 发现库。
-
流管理器 SDK,可用于在核心设备上管理数据流。
-
-
云服务
-
AWS IoT Greengrass V2 API
-
AWS IoT Greengrass V2 管理控制台
-
AWS IoT Greengrass Core 软件
您可以使用在边缘设备上运行的 AWS IoT Greengrass Core 软件来执行以下操作:
-
在本地设备上处理数据流,并自动导出到 AWS 云。有关更多信息,请参阅 管理 Greengrass 核心设备上的数据流。
-
支持 AWS IoT 和组件之间的 MQTT 消息收发。有关更多信息,请参阅 发布/订阅 AWS IoT Core MQTT 消息。
-
与通过 MQTT 连接和通信的本地设备进行交互。有关更多信息,请参阅 与本地 IoT 设备交互。
-
支持组件之间的本地发布和订阅消息收发。有关更多信息,请参阅 发布/订阅本地消息。
-
部署和调用组件和 Lambda 函数。有关更多信息,请参阅 将 AWS IoT Greengrass 组件部署到设备。
-
管理组件生命周期,例如支持安装和运行脚本。有关更多信息,请参阅 AWS IoT Greengrass 组件配方参考。
-
对 AWS IoT Greengrass Core 软件和自定义组件执行安全的空中下载(OTA)软件更新。有关更多信息,请参阅更新 AWS IoT Greengrass Core 软件(OTA)和将 AWS IoT Greengrass 组件部署到设备。
-
提供本地密钥的安全、加密的存储以及组件进行的受控访问。有关更多信息,请参阅 密钥管理器。
-
通过设备身份验证和授权,确保设备和 AWS 云之间的安全连接。有关更多信息,请参阅 设备身份验证和授权 AWS IoT Greengrass。
您可以通过 AWS IoT Greengrass API 配置和管理 Greengrass 核心设备,并在其中创建持续的软件部署。有关更多信息,请参阅 将 AWS IoT Greengrass 组件部署到设备。
某些功能仅在某些平台上受支持。有关更多信息,请参阅 Greengrass 功能兼容性。
有关支持的平台、要求和下载的更多信息,请参阅设置 AWS IoT Greengrass 核心设备。
下载此软件即表示您同意Greengrass Core 软件许可协议