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

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

从 AWS AWS IoT Greengrass 版本 1 移动

AWS AWS IoT Greengrass 版本 2 是 AWS AWS IoT Greengrass 核心软件APIs 和控制台的新主要版本。您不能将 AWS AWS IoT Greengrass Core 软件 v1 与 V2 APIs 一起使用,也不能将 AWS AWS IoT Greengrass Core 软件 v2 与 V1 APIs 一起使用。但是,通过使用一些修改,您可以在 AWS AWS IoT Greengrass V2 上运行 V1 应用程序。

V1 和 V2 之间的区别

AWS AWS IoT Greengrass V2 为设备、队组和可部署软件引入了新的基本概念。本节介绍 V2 中不同的 V2V1 概念。

  • AWS IoT Greengrass 组和部署

    在 AWS AWS IoT Greengrass V1 中,组定义核心设备、该核心设备的设置和软件以及连接到该核心设备的 AWS IoT IoT 事物的列表。

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

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

    注意

    AWS AWS IoT Greengrass V2 当前不支持连接的设备,也称为 Greengrass 设备。

  • AWS AWS IoT Greengrass 核心软件和连接器

    在 AWS AWS IoT Greengrass V1 中 AWS IoT IoT Greengrass 核心软件是包含 软件及其所有功能的单个软件包。AWS AWS IoT Greengrass 连接器是您部署到 AWS AWS IoT Greengrass V1 核心设备的模块。

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

  • AWS Lambda 函数

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

    在 AWS AWS IoT Greengrass V2 中,组件是在核心设备上运行的软件。组件可以包含任何软件,并且每个组件都有一个配方来定义组件的元数据、参数、依赖项和脚本,以便在组件生命周期中的每个步骤中运行。该配方还定义了组件的构件,这些构件是二进制文件,例如脚本、编译代码和静态资源。当您将组件部署到核心设备时,核心设备将下载组件配方和构件以运行组件。有关更多信息,请参阅管理 AWS IoT IoT Greengrass 组件

    您可以将 Lambda 函数作为在 AWS AWS IoT Greengrass V2 的 Lambda 运行时环境中运行的组件导入。当您导入 Lambda 函数时,您可以为该函数指定订阅、本地资源和容器参数。有关更多信息,请参阅在 AWS AWS IoT Greengrass V1 上运行 AWS IoT IoT Greengrass V2 应用程序

  • 订阅

    在 AWS AWS IoT Greengrass V1 中,订阅指定 Lambda 函数接收要用作函数负载的事件消息的位置。函数订阅本地发布/订阅消息和 AWS IoT Core MQTT 消息。

    在 AWS AWS IoT Greengrass V2 中,组件管理自己的对本地发布/订阅和 AWS AWS IoT Core MQTT 消息的订阅。在组件配方中,您可以定义授权策略以指定组件可用于通信的主题。在组件代码中,您可以将进程间通信 (IPC) 用于本地发布/订阅消息收发和 AWS IoT IoT Core MQTT 消息收发。有关更多信息,请参阅使用 AWS AWS IoT 设备开发工具包进行进程间通信 (IPC)

  • 本地资源

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

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

    注意

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

在 AWS AWS IoT Greengrass V1 上运行 AWS IoT IoT Greengrass V2 应用程序

您可以在 AWS AWS IoT Greengrass V1 上运行大多数 AWS AWS IoT Greengrass V2 应用程序。您可以使用 AWS 提供的组件(提供与 AWS AWS IoT Greengrass 连接器相同的功能),并且可以将 Lambda 函数作为在 AWS AWS IoT Greengrass V2 上运行的组件导入。

我是否可以在 Greengrass v1 上运行我的 Greengrass v2 应用程序?

AWS AWS IoT Greengrass 提供了一些功能,您可以使用这些功能在 AWS IoT IoT Greengrass 核心软件 v1 上运行 AWS AWS IoT Greengrass 核心软件 v2 应用程序。但是,如果您的 v1 应用程序使用以下列出的任何功能,您还无法在 v2 软件上运行它们。

  • 通过本地网络连接的设备(也称为能够识别 Greengrass 的设备)和 MQTT

  • 设备影子和影子同步

  • 硬件安全性集成

  • 流管理器遥测指标

  • AWS AWS IoT Greengrass 核心开发工具包中的以下语言:

    • Node.js

    • C

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

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

运行 V1 Lambda 函数

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

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

  • 流管理器

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

  • 本地密钥

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

  • 订阅

    如果您的 Lambda 函数将消息发布到本地发布/订阅代理或 AWS IoT IoT Core,请在导入函数时指定 aws.greengrass.LegacySubscriptionRouter 作为组件依赖项。部署旧订阅路由器组件时,请指定 Lambda 函数使用的订阅。有关更多信息,请参阅传统订阅路由器

    注意

    仅当 Lambda 函数使用 AWS AWS IoT Greengrass 核心开发工具包中的 publish() 函数时,才需要此组件。如果您更新 Lambda 函数代码以使用 V2 开发工具包,则无需部署旧订阅路由器组件。有关更多信息,请参阅以下进程间通信服务:

  • 本地卷和设备

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

  • 访问其他 AWS 服务

    如果您的 Lambda 函数使用 AWS 凭证向其他 AWS 服务发出请求,则在导入函数时指定 aws.greengrass.TokenExchangeService 作为组件依赖项。核心设备的角色别名必须指向一个 IAM 角色,该角色允许核心设备执行 Lambda 函数使用的 AWS 操作。有关更多信息,请参阅 令牌交换服务授权核心设备与 AWS 服务交互

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

运行 AWS IoT IoT Greengrass 连接器

您可以部署 AWS 提供的组件,这些组件提供 AWS AWS IoT Greengrass 连接器的相同功能。在创建部署时,您可以配置连接器的参数。有关更多信息,请参阅以下提供 Greengrass 连接器的 AWS AWS IoT Greengrass V2 组件:

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

运行机器学习推理

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