使用 Greengrass 连接器与服务和协议集成 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅Amazon IoT Greengrass Version 2开发人员指南.

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

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

此功能适用于Amazon IoT Greengrass核心 v1.7 及更高版本。

连接器Amazon IoT Greengrass是一种预构建的模块,可更有效地与本地基础设施、设备协议、Amazon和其他云服务。通过使用连接器,您可以减少花在学习新协议和 API 上的时间,花更多的时间关注逻辑这对您的业务很重要。

下图显示了连接器在Amazon IoT Greengrass 景观。


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

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


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

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

Greengrass 连接器可帮助您扩展设备功能或创建单一用途设备。通过使用连接器,您可以:

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

  • 与云和本地服务交互,包括Amazon和第三方服务。

  • 提取并处理设备数据。

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

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

Requirements

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

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

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

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

使用 Greengrass 连接器

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

您可以将某些连接器部署为简单的独立应用程序。例如,Defender 连接器从核心设备读取系统指标,并将其发送到Amazon 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 通知。要帮助找到适用于您场景的连接器并了解其各自的要求,请参阅 Amazon-提供的 Greengrass 连接器

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

    注意

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

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

  5. 将组部署到 Greengrass 核心。

有关创建和部署连接器的信息,请参阅以下教程:

配置参数

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

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

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

用于访问组资源的参数

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

组资源包括:

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

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

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

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

更新连接器参数

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

  • 在 控制台中,执行以下操作:从组配置页面上,打开连接器,从连接器的上下文菜单中,选择编辑

    注意

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

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

    这些区域有:Amazon IoT GreengrassAPI 使用版本来管理组。版本是不变的,因此,若要添加或更改组组件(例如,组的设备、函数和资源),必须创建新组件或已更新组件的版本。然后,您创建和部署包含每个组件的目标版本的组版本。

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

输入和输出

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

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

注意

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

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

对容器化的支持

默认情况下,大多数连接器在由 Amazon IoT Greengrass 管理的隔离运行时环境中的 Greengrass 核心上运行。这些运行时环境称为容器,它们可以将连接器和主机系统分隔开,从而为主机和连接器提供更高的安全性。

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

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

注意

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

升级连接器版本

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

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

  1. 在Amazon IoT控制台的导航窗格中,选择Greengrass传统版 (V1)Groups

  2. UNDERGreengrass 组,选择您的组。

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

    如果连接器具有新版本,则Available按钮将显示在升级column.

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

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

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

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

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

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

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

连接器的日志记录

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

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

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

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

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