设置新的 V2 核心设备来测试 V1 应用程序 - AWS IoT Greengrass

设置新的 V2 核心设备来测试 V1 应用程序

设置新的 AWS IoT Greengrass V2 核心设备来部署和测试 AWS 为您的 AWS IoT Greengrass V1 应用程序提供的组件和 AWS Lambda 函数。您还可以使用此 V2 核心设备开发和测试在核心设备上运行本机进程的其他自定义 Greengrass 组件。在 V2 核心设备上测试应用程序后,可以将现有的 V1 核心设备升级到 V2,然后部署提供 V1 功能的 V2 组件。

步骤 1:在新设备上安装 AWS IoT Greengrass V2

在新设备上安装 AWS IoT Greengrass Core 软件 v2.x。您可以按照入门教程设置设备并学习如何开发和部署组件。本教程使用自动配置来快速设置设备。安装 AWS IoT Greengrass Core 软件 v2.x 时,请指定用于部署 Greengrass CLI--deploy-dev-tools 参数,以便直接在设备上开发、测试和调试组件。有关其他安装选项的更多信息,包括如何在代理后面安装 AWS IoT Greengrass Core 软件或使用硬件安全模块(HSM),请参阅安装 AWS IoT Greengrass Core 软件

(可选)支持将日志记录到 Amazon CloudWatch Logs

要使 V2 核心设备能够将日志上传到 Amazon CloudWatch Logs,您可以部署 AWS 提供的日志管理器组件。您可以使用 CloudWatch Logs 查看组件日志,因此无需访问核心设备的文件系统即可进行调试和故障排除。有关更多信息,请参阅 监控 AWS IoT Greengrass 日志

步骤 2:创建和部署 AWS IoT Greengrass V2 组件以迁移 AWS IoT Greengrass V1 应用程序

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

您还可以开发自定义组件来构建任何功能或运行时,以在 Greengrass 核心设备上运行。有关如何在本地开发和测试组件的信息,请参阅创建 AWS IoT Greengrass 组件

导入 V1 Lambda 函数

您可以将 Lambda 函数作为 AWS IoT Greengrass V2 组件导入。请从以下方法中选择:

  • 将 V1 Lambda 函数作为 Greengrass 组件直接导入。

  • 更新 Lambda 函数以使用 AWS IoT Device SDK v2 中的 Greengrass 库,然后将 Lambda 函数作为 Greengrass 组件导入。

  • 创建使用非 Lambda 代码和 AWS IoT Device SDK v2 的自定义组件,以实现与 Lambda 函数相同的功能。

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

  • 访问其他 AWS 服务

    如果您的 Lambda 函数使用 AWS 凭证向其他 AWS 服务发出请求,则核心设备的令牌交换角色必须允许核心设备执行 Lambda 函数使用的 AWS 操作。有关更多信息,请参阅 授权核心设备与 AWS 服务交互

  • 流管理器

    如果您的 Lambda 函数使用流管理器,请在导入函数时指定 aws.greengrass.StreamManager 作为组件依赖关系。部署流管理器组件时,请指定要为目标核心设备设置的流管理器参数。核心设备的令牌交换角色必须允许核心设备访问您在流管理器中使用的 AWS Cloud 目标。有关更多信息,请参阅 流管理器

  • 本地密钥

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

    在部署 Lambda 函数组件时,请将其配置为具有 IPC 授权策略,该策略授予在 AWS IoT Device SDK V2 中使用 GetSecretValue IPC 操作的权限。

  • 本地影子

    如果您的 Lambda 函数与本地影子交互,则必须更新 Lambda 函数代码才能使用 AWS IoT Device SDK V2。导入函数时,还必须指定 aws.greengrass.ShadowManager 作为组件依赖关系。有关更多信息,请参阅 与设备影子交互

    在部署 Lambda 函数组件时,请将其配置为具有 IPC 授权策略,该策略授予在 AWS IoT Device SDK V2 中使用影子 IPC 操作的权限。

  • 订阅

    • 如果您的 Lambda 函数订阅了来自云源的消息,请在导入该函数时将这些订阅指定为事件源。

    • 如果您的 Lambda 函数订阅了来自其他 Lambda 函数的消息,或者您的 Lambda 函数向 AWS IoT Core 或其他 Lambda 函数发布消息,请在部署 Lambda 函数时配置和部署旧版订阅路由器组件。部署旧版订阅路由器组件时,请指定 Lambda 函数使用的订阅。

      注意

      只有当您的 Lambda 函数使用 AWS IoT Greengrass Core SDK 中的 publish() 函数时,才需要使用旧版订阅路由器组件。若您更新 Lambda 函数代码以使用 AWS IoT Device SDK V2 中的进程间通信(IPC)接口,则无需部署旧版订阅路由器组件。有关更多信息,请参阅以下进程间通信服务:

    • 如果您的 Lambda 函数订阅了来自本地连接设备的消息,请在导入该函数时将这些订阅指定为事件源。您还必须配置和部署 MQTT 网桥组件,以便将来自连接设备的消息中继到您指定为事件源的本地发布/订阅主题。

    • 如果您的 Lambda 函数向本地连接设备发布消息,则必须更新 Lambda 函数代码以使用 AWS IoT Device SDK V2 发布本地发布/订阅消息收发。您还必须配置和部署 MQTT 网桥组件,以便将来自本地发布/订阅消息收发代理的消息中继到连接设备。

  • 本地卷和设备

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

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

使用 V1 连接器

您可以部署 AWS 提供的组件,这些组件的功能与某些 AWS IoT Greengrass 连接器相同。创建部署时,您可以配置连接器的参数。

以下 AWS IoT Greengrass V2 组件提供 Greengrass V1 连接器功能:

运行 Docker 容器

AWS IoT Greengrass V2 不提供直接替换 V1 Docker 应用程序部署连接器的组件。但是,您可以使用 Docker 应用程序管理器组件下载 Docker 映像,然后根据下载的映像创建运行 Docker 容器的自定义组件。有关更多信息,请参阅运行 Docker 容器Docker 应用程序管理器

运行机器学习推理

AWS IoT Greengrass V2 提供 Amazon SageMaker Edge Manager 组件,用于安装 Amazon SageMaker Edge Manager 代理,并允许您在 Greengrass 核心设备上使用 SageMaker Neo 编译的模型作为模型组件。AWS IoT Greengrass V2 还提供在设备上安装深度学习运行时TensorFlow Lite 的组件。您可以使用相应的 DLR 和 TensorFlow Lite 模型以及推理组件来执行样本图像分类和对象检测推理。要使用其它机器学习框架,例如 MXNet 和 TensorFlow,您可以开发您自己的使用这些框架的自定义组件。

连接 V1 Greengrass 设备

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

启用本地影子服务

在 AWS IoT Greengrass V2 中,本地影子服务由 AWS 提供的影子管理器组件实施。AWS IoT Greengrass V2 还支持命名影子。要使您的组件能够与本地影子交互并将影子状态同步到 AWS IoT Core,请配置和部署影子管理器组件,并在组件代码中使用影子 IPC 操作。有关更多信息,请参阅 与设备影子交互

与 AWS IoT SiteWise 集成

如果您使用 V1 核心设备作为 AWS IoT SiteWise 网关,请按照说明将新 V2 核心设备设置为 AWS IoT SiteWise 网关。AWS IoT SiteWise 提供为您部署 AWS IoT SiteWise 组件的安装脚本。

步骤 3:测试您的 AWS IoT Greengrass V2 应用程序

在创建 V2 组件并将其部署到新的 V2 核心设备后,请验证您的应用程序是否符合预期。您可以检查设备日志,查看组件的标准输出 (stdout) 和标准错误 (stderr) 消息。有关更多信息,请参阅 监控 AWS IoT Greengrass 日志

如果已将 Greengrass CLI 部署到核心设备,您便可以使用它来调试组件及其配置。有关更多信息,请参阅 Greengrass CLI 命令

验证您的应用程序在 V2 核心设备上正常运行后,您可以将应用程序的 Greengrass 组件部署到其他核心设备。如果您开发了运行本机进程或 Docker 容器的自定义组件,则必须先将这些组件发布到 AWS IoT Greengrass 服务,然后才能将其部署到其他核心设备。