从移动Amazon IoT Greengrass版本 1 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

从移动Amazon IoT Greengrass版本 1

Amazon IoT Greengrass Version 2是新的主要版本Amazon IoT Greengrass核心软件、API 和控制台。您不能使用Amazon IoT Greengrass使用 V2 API 的核心软件 v1.x。同样,您不能使用Amazon IoT Greengrass使用 V1 API 的核心软件 2.0。但是,通过使用一些修改,您可以在Amazon IoT Greengrass V2。

V1 和 V2 之间的区别

Amazon IoT Greengrass V2为设备、车队和可部署软件推出了新的基本概念。本节介绍 V2 中不同的 V1 概念。

  • Amazon IoT Greengrass 组和部署

    InAmazon IoT Greengrass V1,组定义核心设备、该核心设备的设置和软件,以及Amazon IoT连接到该核心设备的东西。

    InAmazon IoT Greengrass V2,则可以使用部署定义在核心设备上运行的软件组件和配置。每个部署都以单个核心设备或Amazon IoT事物组,可以包含多个核心设备。对事物组的部署是持续的,因此当您将核心设备添加到事物组时,它会收到该队列的软件配置。有关更多信息,请参阅 部署Amazon IoT Greengrass组件到设备

    您还可以创建本地部署以开发和测试自定义软件组件。有关更多信息,请参阅 创建自定义Amazon IoT Greengrass组件

  • Amazon IoT Greengrass Core 软件和连接器

    InAmazon IoT Greengrass V1,Amazon IoT Greengrass核心软件是一个包含软件及其所有功能的软件包。Amazon IoT Greengrass连接器是您部署到Amazon IoT Greengrass V1核心设备。

    InAmazon IoT Greengrass V2,Amazon IoT Greengrass核心软件是模块化的,因此您可以选择安装什么来控制内存占用。这些区域有:Greengrass 核组件是所需的最低安装Amazon IoT Greengrass处理其他组件的部署、编排和生命周期管理的核心软件。流管理器、秘密管理器和日志管理器等功能是您仅在需要这些功能时部署的组件。Amazon IoT Greengrass V2还提供了一些Amazon IoT Greengrass V1连接器作为组件。有关更多信息,请参阅 Amazon-提供的组件

  • Amazon Lambda 函数

    InAmazon IoT Greengrass V1,Lambda 函数定义在核心设备上运行的软件。在每个 Greengrass 组中,您可以定义该函数使用的预订和本地资源。您还可以定义容器参数Amazon IoT Greengrass核心软件在容器化 Lambda 运行时环境中运行。

    InAmazon IoT Greengrass V2、组件是在核心设备上运行的软件。组件可以包括任何软件应用程序,并且每个组件都有recipe,定义了组件的元数据、参数、依赖项和要在组件生命周期的每个步骤运行的脚本。配方还定义了组件的构件,它们是二进制文件,如脚本、编译代码和静态资源。将组件部署到核心设备时,核心设备会下载组件配方和对象以运行该组件。有关更多信息,请参阅 ManageAmazon IoT Greengrass组件

    您可以将 Lambda 函数作为在Amazon IoT Greengrass V2。导入 Lambda 函数时,需要为函数指定预订、本地资源和容器参数。有关更多信息,请参阅运行Amazon IoT Greengrass V1上的应用程序Amazon IoT Greengrass V2

  • 订阅

    InAmazon IoT Greengrass V1,订阅指定 Lambda 函数接收事件消息的位置,以作为函数有效载荷使用。函数订阅本地发布/订阅消息,Amazon IoT CoreMQTT 消息。

    InAmazon IoT Greengrass V2,组件管理自己对本地发布/订阅和订阅的订阅,Amazon IoT CoreMQTT 消息。在组件配方中,您可以定义授权策略以指定组件可以使用哪些主题进行通信。在组件代码中,您可以使用进程间通信 (IPC) 进行本地发布/订阅消息传送和Amazon IoT CoreMQTT 消息。有关更多信息,请参阅 使用Amazon IoT Device SDK用于进程间通信 (IPC)

  • 本地资源

    InAmazon IoT Greengrass V1,Lambda 函数在您配置的容器中运行,以访问核心设备文件系统上的卷和设备。

    InAmazon IoT Greengrass V2,组件在容器之外运行,因此您无需指定组件可访问哪些本地资源。您可以在核心设备上开发直接使用本地资源的组件。您还可以开发运行 Docker 容器的组件。有关更多信息,请参阅 运行 Docker 容器

    注意

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

  • Greengrass 设备(连接设备)

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

    InAmazon IoT Greengrass V2,连接的设备称为 Greengrass 客户端设备,您可以将客户端设备与核心设备相关联,以便连接这些设备并通过 MQTT 进行通信。您可以定义应用于客户端设备组的授权策略,因此无需创建部署即可添加或删除客户端设备。要在客户端设备之间中继消息,Amazon IoT Core和 Greengrass 组件,您可以配置可选的 MQTT 桥组件。有关更多信息,请参阅 与本地 IoT 设备进行交互

    在这两者Amazon IoT Greengrass V1和Amazon IoT Greengrass V2,设备可以运行FreeRTOS或使用Amazon IoT Device SDK或者Greengrass 发现 API,以获取有关核心设备可以连接的信息。

  • 本地影子服务

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

    InAmazon IoT Greengrass V2中,您可以通过部署卷影管理器组件来启用本地卷影服务。然后,可以使用Amazon IoT Device SDKV2 在 Lambda 函数中或在自定义组件中与设备上的阴影进行交互。

    在这两者Amazon IoT Greengrass V1和Amazon IoT Greengrass V2,您可以将局部阴影状态与Amazon IoT Core。有关更多信息,请参阅 与设备阴影交互

运行Amazon IoT Greengrass V1上的应用程序Amazon IoT Greengrass V2

您可以运行大多数Amazon IoT Greengrass V1上的应用程序Amazon IoT Greengrass V2。您可以使用Amazon提供的组件,与Amazon IoT Greengrass连接器,并且您可以将 Lambda 函数作为Amazon IoT Greengrass V2。

我可以在 Greengrass v2.0 上运行我的 Greengrass v1.x 应用程序吗?

Amazon IoT Greengrass提供了可用来运行Amazon IoT Greengrass核心软件 v1.x 应用程序Amazon IoT Greengrass核心软件 v2.0。但是,如果您的 v1.x 应用程序使用以下任何列出的功能,则您将无法在 v2.0 软件上运行这些功能。

  • 硬件安全性集成

  • 流管理器遥测指标

  • 以下语言Amazon IoT Greengrass核心开发工具包:

    • Node.js

    • C

  • C 和 C++ Lambda 函数的运行时。

您可以开发自定义组件构建在 Greengrass 核心设备上运行的任何功能或运行时。

运行 V1 Lambda 函数

可以将 Lambda 函数作为Amazon IoT Greengrass V2组件。如果组件使用诸如流管理器或本地机密等功能,则必须在Amazon-提供的组件包含这些功能的功能。部署组件时,部署将包括您指定的组件依赖关系。在部署 Lambda 函数组件时,可以配置这些相关功能。

如果 Lambda 函数使用诸如流管理器或本地机密等功能,则必须在Amazon-提供包含这些功能的组件。部署 Lambda 函数组件时,部署还包括定义为依赖项的每个功能的组件。在部署中,您可以配置参数,例如要将哪些密钥部署到核心设备。并非所有 V1 功能都需要 V2 上的 Lambda 函数的组件依赖关系。下面的列表介绍了如何在 Lambda 函数组件的 V2 上使用 V1 功能。

  • 流管理器

    如果您的 Lambda 函数使用流管理器,请指定aws.greengrass.StreamManager作为组件依赖关系,当您导入函数时。部署流管理器组件时,请指定要为目标核心设备设置的流管理器参数。有关更多信息,请参阅 流管理器

  • 本地 Secret

    如果您的 Lambda 函数使用本地机密,请指定aws.greengrass.SecretManager作为组件依赖关系,当您导入函数时。部署密钥管理器组件时,请指定要部署到目标核心设备的秘密资源。核心设备的角色别名必须指向允许核心设备检索要部署的秘密资源的 IAM 角色。有关更多信息,请参阅 Secret Manager

  • 订阅

    如果您的 Lambda 函数将消息发布到本地发布/订阅经纪商或Amazon IoT Core,指定aws.greengrass.LegacySubscriptionRouter作为组件依赖关系,当您导入函数时。部署旧版订阅路由器组件时,请指定 Lambda 函数使用的预订。有关更多信息,请参阅 旧版订阅路由器

    注意

    只有当您的 Lambda 函数使用publish()函数Amazon IoT Greengrass核心开发工具包。如果您更新 Lambda 函数代码以使用 V2 中的进程间通信 (IPC) 接口Amazon IoT Device SDK,不需要部署旧订阅路由器组件。有关更多信息,请参阅下列进程间通信服务:

  • 本地卷和设备

    如果您的容器化 Lambda 函数访问本地卷或设备,请在导入 Lambda 函数时指定这些卷和设备。此功能不需要组件依赖项。

  • 本地影子

    如果 Lambda 函数与本地阴影交互,则必须更新 Lambda 函数代码以使用Amazon IoT Device SDKV2。您还必须指定aws.greengrass.ShadowManager作为组件依赖关系,当您导入函数时。

  • 访问其他Amazon服务

    如果 Lambda 函数使用Amazon凭据向其他Amazon服务,指定aws.greengrass.TokenExchangeService作为组件依赖关系,当您导入函数时。核心设备的角色别名必须指向允许核心设备执行AmazonLambda 函数使用的操作。有关更多信息,请参阅 Token Token Service授权核心设备与Amazon服务

有关更多信息,请参阅 运行Amazon Lambda函数

运行Amazon IoT Greengrass连接器

您可以部署Amazon-提供的组件,它们提供Amazon IoT Greengrass连接器。创建部署时,可以配置连接器的参数。有关更多信息,请参阅下列Amazon IoT Greengrass V2提供 Greengrass 连接器的组件:

Amazon IoT Greengrass V2不提供替换 Docker 应用程序部署连接器的组件,但您可以创建从映像运行 Docker 容器的组件。有关更多信息,请参阅 运行 Docker 容器

运行机器学习推理

Amazon IoT Greengrass V2提供示例 Amazon SageMaker Neo DLR 机器学习组件和模型。您可以将这些功能用于影像分类和对象检测。要使用其他机器学习框架(如 MxNet 和 TensorFlow),您可以开发使用这些框架的自定义组件。

Connect V1 Greengrass 设备

InAmazon IoT Greengrass V2,Greengrass 设备(或连接的设备)称为客户端设备。Amazon IoT Greengrass V2向后兼容Amazon IoT Greengrass V1,因此您可以将 V1 核心设备连接到 V2 核心设备,而无需更改其应用程序代码。要使客户端设备能够连接 V2 核心设备,请部署启用客户端设备支持的 Greengrass 组件,并将客户端设备与核心设备关联。要在客户端设备之间中继消息,Amazon IoT Core云服务和 Greengrass 组件(包括 Lambda 函数),部署和配置MQTT 桥组件。您可以部署IP 检测器组件自动检测连接信息,也可以手动管理端点。有关更多信息,请参阅 与本地 IoT 设备进行交互