在组件中与影子交互 - AWS IoT Greengrass

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

在组件中与影子交互

您可以开发自定义组件(包括 Lambda 函数组件),使用本地影子服务读取和修改本地影子文档和客户端设备影子文档。

自定义组件使用 AWS IoT Device SDK 中的 AWS IoT Greengrass Core IPC 库与本地影子服务交互。影子管理器组件在核心设备上支持本地影子服务。

要将影子管理器组件部署到 Greengrass 核心设备,请创建包含 aws.greengrass.ShadowManager 组件的部署

注意

默认情况下,部署影子管理器组件仅支持本地影子操作。要支持 AWS IoT Greengrass 将核心设备影子的影子状态信息或客户端设备的任何影子同步到 AWS IoT Core 中相应的云影子文档,您必须为包含 synchronize 参数的影子管理器组件创建配置更新。有关更多信息,请参阅 将本地设备影子与 AWS IoT Core 同步

检索和修改影子状态

影子 IPC 操作会检索和更新本地影子文档中的状态信息。影子管理器组件负责处理核心设备上这些影子文档的存储。

修改本地影子状态
  1. 在自定义组件的配方中添加授权策略,以允许组件接收有关本地影子主题的消息。

    有关授权策略示例,请参阅本地影子 IPC 授权策略示例

  2. 使用影子 IPC 操作来检索和修改影子状态信息。有关在组件代码中使用影子 IPC 操作的更多信息,请参阅与本地影子交互

注意

要使核心设备能够与客户端设备影子交互,您还必须配置和部署 MQTT 网桥组件。有关更多信息,请参阅启用影子管理器以与客户端设备通信

应对影子状态更改

Greengrass 组件使用本地发布/订阅接口在核心设备上进行通信。要使自定义组件能够应对影子状态更改,您可以订阅本地发布/订阅主题。这样允许组件接收有关本地影子主题的消息,然后处理这些消息。

本地影子主题与 AWS IoT 设备影子 MQTT 主题使用相同的格式。有关更多信息,请参阅《AWS IoT 开发人员指南》中的设备影子 MQTT 主题

应对本地影子状态更改
  1. 在自定义组件的配方中添加访问控制策略,以允许组件接收有关本地影子主题的消息。

    有关授权策略示例,请参阅本地影子 IPC 授权策略示例

  2. 要在组件中启动自定义操作,请使用 SubscribeToTopic IPC 操作订阅要接收的消息所关于的影子主题。有关在组件代码中使用本地发布/订阅 IPC 操作的更多信息,请参阅发布/订阅本地消息

  3. 要调用 Lambda 函数,请使用事件源配置提供影子主题的名称并指定它是本地发布/订阅主题。有关创建 Lambda 函数组件的更多信息,请参阅运行 AWS Lambda 函数

注意

要使核心设备能够与客户端设备影子交互,您还必须配置和部署 MQTT 网桥组件。有关更多信息,请参阅启用影子管理器以与客户端设备通信