Amazon IoT Greengrass V1与Amazon IoT Greengrass V2的区别 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon IoT Greengrass V1与Amazon IoT Greengrass V2的区别

Amazon IoT Greengrass V2 为设备、实例集和可部署软件引入了新的基本概念。本节介绍了 V2 中不同于 V1 的概念。

Greengrass 概念和术语
概念 Amazon IoT Greengrass V1 Amazon IoT Greengrass V2

应用程序代码

在 Amazon IoT Greengrass V1 中,Lambda 函数定义了在核心设备上运行的软件。在每个 Greengrass 组中,您可以定义该函数使用的订阅和本地资源。对于 Amazon IoT Greengrass Core 软件在容器化 Lambda 运行时环境中运行的 Lambda 函数,您可以定义容器参数,例如内存限制。

在 Amazon IoT Greengrass V2 中,组件是在核心设备上运行的软件。

  • 每个组件都有一个配方,用于定义组件的元数据、参数、依赖关系和在组件生命周期的每个步骤运行的脚本。

  • 该配方还定义了组件的构件,即二进制文件,例如脚本、编译的代码和静态资源。

  • 当您将组件部署到核心设备时,核心设备会下载组件配方和构件以运行该组件。

您可以将 V1 Lambda 函数作为在 Lambda 运行时环境中运行的组件导入 Amazon IoT Greengrass V2。导入 Lambda 函数时,您需要为该函数指定订阅、本地资源和容器参数。有关更多信息,请参阅 步骤 2:创建和部署 Amazon IoT Greengrass V2 组件以迁移 Amazon IoT Greengrass V1 应用程序

有关如何创建自定义组件的更多信息,请参阅开发 Amazon IoT Greengrass 组件

Amazon IoT Greengrass 组和部署

在 Amazon IoT Greengrass V1 中,一个组定义了核心设备、该核心设备的设置和软件,以及可以连接到该核心设备的 Amazon IoT 事物列表。您可以创建部署以将组的配置发送到核心设备。

在 Amazon IoT Greengrass V2 中,您可以使用部署来定义在核心设备上运行的软件组件和配置。

  • 每个部署都以单个核心设备(即 Amazon IoT 事物)或可包含多个核心设备的 Amazon IoT 事物组为目标。

  • 对事物组的部署是连续的,因此当您将核心设备添加到事物组时,设备会收到该组的软件配置。

有关更多信息,请参阅 将 Amazon IoT Greengrass 组件部署至设备

在 Amazon IoT Greengrass V2 中,您还可以使用 Greengrass CLI 创建本地部署,以便在开发自定义软件组件的设备上测试这些组件。有关更多信息,请参阅 创建 Amazon IoT Greengrass 组件

Amazon IoT Greengrass Core 软件

在 Amazon IoT Greengrass V1 中,Amazon IoT Greengrass Core 软件是一个包含该软件及其所有功能的单个软件包。您安装 Amazon IoT Greengrass Core 软件的边缘设备称为 Greengrass 核心。

在 Amazon IoT Greengrass V2 中,Amazon IoT Greengrass Core 软件是模块化的,因此您可以选择要安装的内容,从而控制内存占用空间。

  • Greengrass Nucleus 组件是 Amazon IoT Greengrass Core 软件安装所需的最低要求。您安装 Nucleus 的边缘设备称为 Greengrass 核心设备。

  • Nucleus 负责处理核心设备上其他组件的部署、编排和生命周期管理。

  • 流管理器、密钥管理器和日志管理器等功能是您可以仅在需要时部署的组件。有关更多信息,请参阅 Amazon提供的组件

连接器

在 Amazon IoT Greengrass V1 中,连接器是您部署到 Amazon IoT Greengrass V1 核心设备的预置模块,用以与本地基础设施、设备协议、Amazon 和其他云服务的交互。

在 Amazon IoT Greengrass V2 中,Amazon 提供了 Greengrass 组件,这些组件实现了 V1 中连接器提供的功能。以下 Amazon IoT Greengrass V2 组件提供 Greengrass V1 连接器功能:

有关更多信息,请参阅 Amazon提供的组件

连接的设备(Greengrass 设备)

在 Amazon IoT Greengrass V1 中,连接的设备是您添加到 Greengrass 组中的 Amazon IoT 事物,用于连接到该组中的核心设备并通过 MQTT 进行通信。每次添加或移除连接的设备时,都必须部署该组。您可以使用订阅在连接的设备、Amazon IoT Core 和核心设备上的应用程序之间中继消息。

在 Amazon IoT Greengrass V2 中,连接的设备称为 Greengrass 客户端设备。

  • 您可以将客户端设备与核心设备关联以连接它们并通过 MQTT 进行通信。

  • 要授权客户端设备连接,您可以定义可应用于客户端设备组的授权策略,这样一来,便无需创建部署即可添加或移除客户端设备。

  • 要在客户端设备、Amazon IoT Core 和 Greengrass 组件之间中继消息,您可以配置可选的 MQTT 网桥组件。

在 Amazon IoT Greengrass V1 和 Amazon IoT Greengrass V2 中,设备都可以运行 FreeRTOS,或使用 Amazon IoT Device SDKGreengrass 发现 API 来获取有关其可以连接的核心设备的信息。Greengrass 发现 API 向下兼容,因此,如果您的客户端设备连接到 V1 核心设备,则无需更改代码即可将其连接到 V2 核心设备。

有关客户端设备的更多信息,请参阅与本地 IoT 设备交互

本地资源

在 Amazon IoT Greengrass V1 中,在容器中运行的 Lambda 函数可以配置为能够访问核心设备文件系统上的卷和设备。这些文件系统资源称为本地资源。

在 Amazon IoT Greengrass V2 中,您可以运行以下组件:Lambda 函数Docker 容器本机操作系统进程或自定义运行时

  • 将容器化 Lambda 函数作为组件导入时,必须指定该函数使用的本地资源。

  • 非容器化 Lambda 函数和非 Lambda 组件可以直接使用核心设备上的本地资源,因此无需指定该组件使用的本地资源。

本地影子服务

在 Amazon IoT Greengrass V1 中,本地影子服务默认处于启用状态,并且仅支持未命名的经典影子。您可以在 Lambda 函数中使用 Amazon IoT Greengrass Core SDK 与设备上的影子进行交互。

在 Amazon IoT Greengrass V2 中,您可以通过部署影子管理器组件来启用本地影子服务。

  • 您可以在 Lambda 函数和自定义组件中使用 Amazon IoT Device SDK V2 与设备上的影子进行交互。

  • 本地影子服务支持命名影子。

  • 本地影子服务允许您删除影子并将已删除的影子与 Amazon IoT Core 同步。

有关更多信息,请参阅 与设备影子交互

订阅

在 Amazon IoT Greengrass V1 中,您可以为 Greengrass 组定义订阅,指定 Lambda 函数、连接器、连接的设备、Amazon IoT Core MQTT 代理和本地影子服务之间的通信渠道。订阅指定 Lambda 函数在何处接收事件消息以作为函数负载。

在 Amazon IoT Greengrass V2 中,您可以在不使用订阅的情况下指定通信渠道。

  • 组件管理其自己的通信渠道,以便与本地发布/订阅消息、Amazon IoT Core MQTT 消息和本地影子服务进行交互。

  • 要配置客户端设备、本地发布/订阅代理和 Amazon IoT Core MQTT 代理之间的通信渠道,您可以配置并部署 MQTT 网桥组件。MQTT 网桥组件使您能够与组件中的客户端设备进行交互,并在客户端设备和 Amazon IoT Core 间中继消息。

访问其他 Amazon Web Services 服务

在 Amazon IoT Greengrass V1 中,您将一个名为组角色的 Amazon Identity and Access Management(IAM)角色附加到 Greengrass 组。该组角色定义了该组核心设备上的 Lambda 函数和 Amazon IoT Greengrass 功能用于访问 Amazon Web Services 服务 的权限。

在 Amazon IoT Greengrass V2 中,您将 Amazon IoT 角色别名附加到 Greengrass 核心设备。角色别名指向称为令牌交换角色的 IAM 角色。令牌交换角色定义了核心设备上的 Greengrass 组件用于访问 Amazon Web Services 服务 的权限。有关更多信息,请参阅 授权核心设备与 Amazon 服务交互