AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Greengrass 连接器与服务和协议集成

此功能适用于 AWS IoT Greengrass Core v1.7 及更高版本。

Greengrass 连接器是预先构建的模块,有助于加快针对常见边缘场景的开发生命周期。它们使您能够更加轻松地与本地基础设施、设备协议、AWS 及其他云服务进行交互。借助连接器,您可以减少花在学习新协议和 API 上的时间,花更多的时间关注对您的业务十分重要的逻辑。

下图显示了连接器在 AWS IoT Greengrass 格局中的作用。

连接器连接到设备、服务和本地资源。

许多连接器使用 MQTT 消息与组中的设备和 Greengrass Lambda 函数进行通信,或者与 AWS IoT 和本地影子服务进行通信。在以下示例中,Twilio 通知 连接器从用户定义的 Lambda 函数接收 MQTT 消息,从 AWS Secrets Manager 使用密钥的本地引用,并调用 Twilio API。

连接器从 Lambda 函数接收 MQTT 消息并调用服务。

有关创建此解决方案的教程,请参阅Greengrass 连接器入门(控制台)Greengrass 连接器入门 (CLI)

Greengrass 连接器可帮助您快速扩展设备功能或创建单一用途设备。连接器使您可以更轻松地:

  • 实施可重用的业务逻辑。

  • 与云和本地服务(包括 AWS 和第三方服务)进行交互。

  • 提取并处理设备数据。

  • 使用 MQTT 主题订阅和用户定义的 Lambda 函数启用设备到设备调用。

AWS 提供了一组 Greengrass 连接器,可简化与常见服务和数据源的交互。这些预先构建的模块支持各种场景,其中包括日志记录和诊断,补充、行业数据处理以及警报和消息发送。有关更多信息,请参阅 AWS 提供的 Greengrass 连接器

要求

连接器存在以下要求:

  • 您必须使用 AWS IoT Greengrass 核心软件 v1.7 or later。

  • 您必须满足要使用的每个连接器的要求。这些要求可能包括设备先决条件、所需权限和限制。有关更多信息,请参阅 AWS 提供的 Greengrass 连接器

  • Greengrass 组只能包含给定连接器的一个已配置实例,但该实例可在多个订阅中使用。有关更多信息,请参阅 配置参数

  • 将 Greengrass 组配置为在不进行容器化的情况下运行时,不支持连接器。有关更多信息,请参阅 使用组特定配置控制 Greengrass Lambda 函数的执行

使用 AWS IoT Greengrass 连接器

连接器是一种组组件。与其他组组件(如设备和用户定义的 Lambda 函数)一样,您可以向组添加连接器,配置其设置,并将它们部署到 AWS IoT Greengrass Core。连接器在核心环境中运行。

有些连接器可部署为简单的独立应用程序。例如,Device Defender 连接器从核心设备读取系统指标,并将其发送到 AWS IoT Device Defender 以供分析。

其他连接器可用作较大解决方案中的构建块。以下示例解决方案使用 Modbus-RTU 协议适配器 连接器处理来自传感器的消息,并使用 Twilio 通知 连接器触发 Twilio 消息。


                从 Lambda 函数依次到 Modbus-RTU 协议适配器 连接器、Lambda 函数、Twilio 通知 连接器和 Twilio 的数据流。

解决方案通常包含挨着连接器的用户定义的 Lambda 函数,并处理连接器发送或接收的数据。在此示例中,TempMonitor 函数从 Modbus-RTU 协议适配器 接收数据,运行某一业务逻辑,然后将数据发送到 Twilio 通知。

要创建和部署解决方案,您需要遵循以下一般过程:

  1. 标出高级数据流。标识您需要使用的数据源、数据通道、服务、协议和资源。在示例解决方案中,这包含 Modbus RTU 协议、物理 Modbus 串行端口和 Twilio 上的数据。

  2. 标识要包含在解决方案中的连接器,并将其添加到您的组。该示例解决方案使用 Modbus-RTU 协议适配器 和 Twilio 通知。要帮助找到适用于您场景的连接器并了解其各自的要求,请参阅 AWS 提供的 Greengrass 连接器

  3. 确定是需要用户定义的 Lambda 函数、设备还是资源,然后创建它们并将其添加到组。这可能包括一些函数,这些函数包含业务逻辑,或将数据处理为解决方案中其他实体所需的格式。该示例使用函数来发送解决方案 Modbus RTU 请求并触发 Twilio 通知。它还包括 Modbus RTU 串行端口的本地设备资源以及 Twilio 身份验证令牌的密钥资源。

    注意

    密钥资源引用 AWS Secrets Manager 中的密码、令牌及其他密钥。连接器和 Lambda 函数可使用密钥对服务和应用程序进行身份验证。默认情况下,AWS IoT Greengrass 可访问其名称以“greengrass-”开头的密钥。有关更多信息,请参阅将密钥部署到 AWS IoT Greengrass 核心

  4. 创建允许解决方案中的实体交换 MQTT 消息的订阅。如果在订阅中使用连接器,则该连接器以及消息源或目标必须使用该连接器支持的预定义主题语法。有关更多信息,请参阅 输入和输出

  5. 将组部署到 Greengrass 核心。

要了解如何创建和部署连接器,请参阅以下教程:

配置参数

许多连接器提供了可让您自定义行为或输出的参数。这些参数在连接器生命周期中的初始化期间、运行时或其他时间使用。

参数类型和用法因连接器而异。例如,SNS 连接器有一个参数用于配置默认的 SNS 主题;而 Device Defender 有一个参数用于配置数据采样率。

组版本可包含多个连接器,但一次只能包含给定连接器的一个实例。这意味着组中的每个连接器只能有一个有效配置。但是,连接器实例可以在组中的多个订阅中使用。例如,您可以创建允许许多设备将数据发送到 Kinesis Firehose 连接器的多个订阅。

用于访问组资源的参数

Greengrass 连接器使用组资源访问核心设备上的文件系统、端口、外围设备及其他本地资源。如果连接器需要访问组资源,则它会提供相关的配置参数。

组资源包括:

  • 本地资源。Greengrass 核心设备上存在的目录、文件、端口、引脚和外围设备。

  • 机器学习资源。机器学习模型在云中训练并部署到核心进行本地推理。

  • 密钥资源。来自 AWS Secrets Manager 的密码、密钥、令牌或任意文本的本地加密副本。连接器可以安全访问这些本地密钥,并使用这些密钥对服务或本地基础设施进行身份验证。

例如,Device Defender 的参数允许访问主机 /proc 目录中的系统指标,而 Twilio 通知 的参数允许访问本地存储的 Twilio 身份验证令牌。

更新连接器参数

在向 Greengrass 组添加连接器时配置参数。您可以在添加连接器后更改参数值。

  • 在控制台中:从组配置页面上,打开 Connectors (连接器),然后从连接器的上下文菜单中选择 Edit (编辑)

    注意

    如果连接器使用的某一密钥资源后来更改为引用其他密钥,您必须编辑连接器的参数并确认这一更改。

  • 在 API 中:创建连接器的另一个版本,用于定义新的配置。

    AWS IoT Greengrass API 使用版本来管理组。版本是不可变的,因此要添加或更改组组件(例如,组的设备、函数和资源),您必须创建全新的或更新的组件的版本。然后,您应创建和部署包含目标版本的组版本。

对连接器配置进行更改后,必须部署该组以将更改传播到核心。

输入和输出

许多 Greengrass 连接器可通过发送和接收 MQTT 消息与其他实体进行通信。MQTT 通信由订阅控制,这些订阅允许连接器与 Greengrass 组中的 Lambda 函数、设备以及其他连接器交换数据,或者与 AWS IoT 和本地影子服务交换数据。要允许此通信,您必须在该连接器所属的组中创建订阅。有关更多信息,请参阅 Greengrass 消息收发工作流程

连接器可以是消息发布者和/或消息订阅者。每个连接器都定义了它发布到或订阅的 MQTT 主题。这些预定义的主题必须在连接器是其消息源或消息目标的订阅中使用。有关包含为连接器配置订阅的步骤的教程,请参阅Greengrass 连接器入门(控制台)Greengrass 连接器入门 (CLI)

注意

许多连接器还具有内置的通信模式以便与云或本地服务进行交互。这些通信模式因连接器而异,可能要求您为组角色配置参数或添加权限。有关连接器要求的信息,请参阅 AWS 提供的 Greengrass 连接器

输入主题

大多数连接器接收有关 MQTT 主题的输入数据。有些连接器订阅输入数据的多个主题。例如,序列号流 连接器支持两个主题:

  • serial/+/read/#

  • serial/+/write/#

对于此连接器,读取和写入请求将发送到相应的主题。创建订阅时,请确保使用符合您的实施的主题。

前面示例中的 +# 字符为通配符。这些通配符允许订阅者接收多个主题上的消息,并允许发布者自定义他们发布到的主题。

  • + 通配符可出现主题层次结构中的任何位置。它可以替换为某个层次结构项目。

    例如,对于主题 sensor/+/input,消息可发布到主题 sensor/id-123/input,但不能发布到 sensor/group-a/id-123/input

  • # 通配符只能出现在主题层次结构末端。它可以替换为零个或零个以上的层次结构项目。

    例如,对于主题 sensor/#,消息可发布到 sensor/, sensor/id-123sensor/group-a/id-123,但不能发布到 sensor

仅当订阅主题时,通配符才有效。消息不能发布到包含通配符的主题。请检查连接器的文档以了解其输入或输出主题要求。有关更多信息,请参阅 AWS 提供的 Greengrass 连接器

日志记录

Greengrass 包含向 Greengrass 日志写入事件和错误的 Lambda 函数。根据您的组设置,日志将写入到 CloudWatch Logs 和/或本地文件系统。来自连接器的日志包含相应函数的 ARN。下面的示例 ARN 来自 Kinesis Firehose 连接器。

arn:aws-cn:lambda:aws-region:account-id:function:KinesisFirehoseClient:1

默认日志记录配置使用以下目录结构将信息级别日志写入到文件系统:

greengrass-root/ggc/var/log/user/区域/aws/function-name.log

有关使用 Greengrass 日志记录的更多信息,请参阅利用 AWS IoT Greengrass 日志进行监控