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

您正在查看 AWS AWS IoT Greengrass 版本 1 的文档。AWS IoT Greengrass 版本 2 是 AWS AWS IoT Greengrass 的最新主要版本。有关使用 AWS AWS IoT Greengrass 版本 2 的更多信息,请参阅 AWS AWS IoT Greengrass V2 开发人员指南

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

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

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

中的连接器是预先构建的模块,可以更有效地与本地基础设施、设备协议、AWS IoT Greengrass 和其他云服务进行交互。AWS通过使用连接器,您可以减少花在学习新协议和 APIs 上的时间,花更多的时间关注对您的业务十分重要的逻辑。

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


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

许多连接器使用 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 连接器.

Requirements

要使用连接器,请记住以下几点:

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

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

  • 当 Greengrass 组的默认容器化设置为无容器时,组中的连接器必须在不进行容器化的情况下运行。要查找支持无容器模式的连接器,请参阅AWS 提供的 Greengrass 连接器.

使用 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 和本地影子服务交换数据。要允许此通信,您必须在该连接器所属的组中创建订阅。有关更多信息,请参阅 MQTT 消息传递工作流中的托管订阅.

连接器可以是消息发布者和/或消息订阅者。每个连接器都定义了它发布到或订阅的 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 核心上运行。AWS IoT Greengrass. 这些运行时环境称为容器,它们在连接器和主机系统之间提供隔离,从而为主机和连接器提供更高的安全性。

但是,在某些环境中不支持此 Greengrass 容器化,例如,当您在 Docker 容器或在没有 cgroup 的旧 Linux 内核上运行 AWS IoT Greengrass 时。在这些环境中,连接器必须在无容器模式下运行。要查找支持无容器模式的连接器,请参阅AWS 提供的 Greengrass 连接器. 有些连接器本身就在这种模式下运行,而有些连接器则允许您设置隔离模式。

您也可以在支持 Greengrass 容器化的环境中将隔离模式设置为 No container (无容器),但我们建议尽可能使用 Greengrass 容器模式。

注意

Greengrass 组的默认容器化设置不适用于连接器。

升级连接器版本

连接器提供商可能会发布新版本的连接器,以添加功能、修复问题或提高性能。有关可用版本和相关更改的信息,请参阅每个连接器的文档.

在 AWS IoT 控制台 中,您可以检查 Greengrass 组中连接器的新版本。

  1. 在 AWS IoT 控制台 的导航窗格中,依次选择 GreengrassClassic (V1)Groups (组)

  2. Greengrass groups (Greengrass 组) 下,选择您的组。

  3. 选择 Connectors (连接器) 以显示组中的连接器。

    如果连接器具有新版本,Upgrade (升级) 列中将显示 Available (可用) 按钮。

  4. 要升级连接器版本,请执行以下操作:

    1. Connectors (连接器) 页上的 Upgrade (升级) 列中,选择 Available (可用). 此时将打开 Upgrade connector (升级连接器) 页面,并显示当前参数设置(如果适用)。

      选择新的连接器版本,根据需要定义参数,然后选择 Upgrade (升级).

    2. Subscriptions (订阅) 页面上,在组中添加新订阅以替换将连接器用作源或目标的任何订阅。然后,删除旧订阅。

      订阅按版本引用连接器,因此,如果您更改组中的连接器版本,则这些连接器将变为无效。

    3. Actions (操作) 菜单中,选择 Deploy (部署) 以将更改部署到核心。

要从 AWS IoT Greengrass API 升级连接器,请创建并部署包含更新的连接器和订阅的组版本。使用与向组添加连接器时相同的过程。有关演示如何使用 AWS CLI 配置和部署示例 Twilio 通知 连接器的详细步骤,请参阅Greengrass 连接器入门 (CLI).

连接器的日志记录

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

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

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

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

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