MQTT 桥 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

MQTT 桥

MQTT 桥接组件 (aws.greengrass.clientdevices.mqtt.Bridge) 在客户端设备、本地 Greengrass 发布/订阅之间中继 MQTT 消息,以及Amazon IoT Core. 您可以使用此组件在自定义组件中处理来自客户端设备的 MQTT 消息,并将客户端设备与Amazon Web Services 云.

注意

客户端设备是连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理的本地 IoT 设备。有关更多信息,请参阅 与本地 IoT 设备互动

您可以使用此组件在以下消息代理之间中继消息:

  • 本地 MQTT — 本地 MQTT 代理处理客户端设备和核心设备之间的消息。

  • 本地发布/订阅-本地 Greengrass 消息代理处理核心设备上组件之间的消息。有关如何在 Greengrass 组件中与这些消息进行交互的更多信息,请参阅发布/订阅本地消息.

  • Amazon IoT Core— 这个Amazon IoT CoreMQTT 代理处理IoT 设备和物联网设备之间的消息Amazon Web Services 云目标。有关如何在 Greengrass 组件中与这些消息进行交互的更多信息,请参阅发布/订阅Amazon IoT CoreMQTT 消息.

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

版本

此组件有以下版本:

  • 2.2.x

  • 2.1.x

  • 2.0.x

类型

这个组件是一个插件组件 (aws.greengrass.plugin)。这些区域有:Greengrass在与核心相同的 Java 虚拟机 (JVM) 中使用该组件来运行。当您在核心设备上更改此组件的版本时,nucleus 会重新启动。

此组件使用与 Greengrass 核相同的日志文件。有关更多信息,请参阅 显示器Amazon IoT Greengrass圆木

有关更多信息,请参阅 组件类型

操作系统

此组件可以安装在运行以下操作系统的核心设备上:

  • Linux

  • Windows

要求

此组件有以下要求:

  • 如果您将核心设备的 MQTT 代理组件配置为使用默认端口 8883 以外的端口,则必须使用 MQTT bridge v2.1.0 或更高版本。将其配置为连接到代理运行的端口。

附属物

部署组件时,Amazon IoT Greengrass还部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本部分列出了附属物已发布的版本这个组件以及定义每个依赖项的组件版本的语义版本约束。您还可以在中查看组件的每个版本的依赖关系Amazon IoT Greengrass控制台. 在组件详细信息页面上,查找附属物列表。

2.2.2

下表列出了该组件版本 2.2.2 的依赖关系。

依赖关系 兼容的版本 附属物
客户端Device 身份验证 >=2.0 <2.0 硬性
2.2.0

下表列出了该组件版本 2.2.0 的依赖关系。

依赖关系 兼容的版本 附属物
客户端Device 身份验证 >=2.0 <2.0 硬性
2.1.1

下表列出了该组件版本 2.1.1 的依赖关系。

依赖关系 兼容的版本 附属物
客户端Device 身份验证 >=2.0 <2.0 硬性
2.0.0 to 2.1.0

下表列出了此组件版本 2.0.0 到 2.1.0 的依赖关系。

依赖关系 兼容的版本 附属物
客户端Device 身份验证 >=2.0 <2.1.0 硬性

有关组件依赖关系的更多信息,请参阅组件配方参考.

配置

此组件提供以下配置参数,您可以在部署组件时自定义这些参数。

2.2.x
mqttTopicMapping

要桥接的主题映射。此组件订阅有关源主题的消息,并将其收到的消息发布到目标主题。每个主题映射都定义了主题、来源类型和目标类型。

此对象包含以下信息:

topicMappingNameKey

此主题映射的名称。Replace(替换)topicMappingNameKey使用可以帮助您识别此主题映射的名称。

此对象包含以下信息:

topic

用于在源经纪人和目标经纪人之间架起桥梁的主题或主题过滤器。

您可以使用+#MQTT 主题通配符用于中继与主题筛选器匹配的所有主题的消息。有关更多信息,请参阅 。MQTT 主题Amazon IoT Core开发人员指南.

注意

将 MQTT 主题通配符与Pubsub源代理,你必须使用 v2.6.0 或更高版本的Greengrass 核组件.

targetTopicPrefix

此组件中继消息时要添加到目标主题的前缀。

source

源消息代理。从以下选项中进行选择:

  • LocalMqtt— 客户端设备通信的本地 MQTT 代理。

  • Pubsub— 当地的 Greengrass 发布/订阅消息代理。

  • IotCore— 这个Amazon IoT CoreMQTT 消息代理。

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

sourcetarget必须不同。

target

目标消息代理。从以下选项中进行选择:

  • LocalMqtt— 客户端设备通信的本地 MQTT 代理。

  • Pubsub— 当地的 Greengrass 发布/订阅消息代理。

  • IotCore— 这个Amazon IoT CoreMQTT 消息代理。

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

sourcetarget必须不同。

brokerUri

(可选)本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口,则必须指定此参数。采用以下格式,并替换港口使用 MQTT 代理运行的端口:ssl://localhost:port.

默认值:ssl://localhost:8883

例 示例:配置合并更新

以下示例配置更新可指定以下内容:

  • 将消息从客户端设备中继到Amazon IoT Core关于匹配的话题clients/+/hello/world主题筛选条件。

  • 将来自客户端设备的消息中继到本地发布/订阅,主题与以下内容相匹配clients/+/detections主题筛选器,然后添加events/input/目标主题的前缀。生成的目标主题与events/input/clients/+/detections主题筛选条件。

  • 将消息从客户端设备中继到Amazon IoT Core关于匹配的话题clients/+/status主题筛选器,然后添加$aws/rules/StatusUpdateRule/目标主题的前缀。此示例将这些消息直接中继到Amazon IoT规则被命名StatusUpdateRule使用以下方法降低成本基本采集物.

{ "mqttTopicMapping": { "ClientDeviceHelloWorld": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" }, "ClientDeviceEvents": { "topic": "clients/+/detections", "targetTopicPrefix": "events/input/", "source": "LocalMqtt", "target": "Pubsub" }, "ClientDeviceCloudStatusUpdate": { "topic": "clients/+/status", "targetTopicPrefix": "$aws/rules/StatusUpdateRule/", "source": "LocalMqtt", "target": "IotCore" } } }
2.1.x
mqttTopicMapping

要桥接的主题映射。此组件订阅有关源主题的消息,并将其收到的消息发布到目标主题。每个主题映射都定义了主题、来源类型和目标类型。

此对象包含以下信息:

topicMappingNameKey

此主题映射的名称。Replace(替换)topicMappingNameKey使用可以帮助您识别此主题映射的名称。

此对象包含以下信息:

topic

用于在源经纪人和目标经纪人之间架起桥梁的主题或主题过滤器。

如果您指定LocalMqtt要么IotCore源代理,你可以使用+#MQTT 主题通配符用于中继与主题筛选器匹配的所有主题的消息。有关更多信息,请参阅 。MQTT 主题Amazon IoT Core开发人员指南.

source

源消息代理。从以下选项中进行选择:

  • LocalMqtt— 客户端设备通信的本地 MQTT 代理。

  • Pubsub— 当地的 Greengrass 发布/订阅消息代理。

  • IotCore— 这个Amazon IoT CoreMQTT 消息代理。

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

sourcetarget必须不同。

target

目标消息代理。从以下选项中进行选择:

  • LocalMqtt— 客户端设备通信的本地 MQTT 代理。

  • Pubsub— 当地的 Greengrass 发布/订阅消息代理。

  • IotCore— 这个Amazon IoT CoreMQTT 消息代理。

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

sourcetarget必须不同。

brokerUri

(可选)本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口,则必须指定此参数。采用以下格式,并替换港口使用 MQTT 代理运行的端口:ssl://localhost:port.

默认值:ssl://localhost:8883

例 示例:配置合并更新

以下示例配置更新指定将来自客户端设备的消息中继到Amazon IoT Core在clients/MyClientDevice1/hello/worldclients/MyClientDevice2/hello/world主题。

{ "mqttTopicMapping": { "ClientDevice1HelloWorld": { "topic": "clients/MyClientDevice1/hello/world", "source": "LocalMqtt", "target": "IotCore" }, "ClientDevice2HelloWorld": { "topic": "clients/MyClientDevice2/hello/world", "source": "LocalMqtt", "target": "IotCore" } } }
2.0.x
mqttTopicMapping

要桥接的主题映射。此组件订阅有关源主题的消息,并将其收到的消息发布到目标主题。每个主题映射都定义了主题、来源类型和目标类型。

此对象包含以下信息:

topicMappingNameKey

此主题映射的名称。Replace(替换)topicMappingNameKey使用可以帮助您识别此主题映射的名称。

此对象包含以下信息:

topic

用于在源经纪人和目标经纪人之间架起桥梁的主题或主题过滤器。

如果您指定LocalMqtt要么IotCore源代理,你可以使用+#MQTT 主题通配符用于中继与主题筛选器匹配的所有主题的消息。有关更多信息,请参阅 。MQTT 主题Amazon IoT Core开发人员指南.

source

源消息代理。从以下选项中进行选择:

  • LocalMqtt— 客户端设备通信的本地 MQTT 代理。

  • Pubsub— 当地的 Greengrass 发布/订阅消息代理。

  • IotCore— 这个Amazon IoT CoreMQTT 消息代理。

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

sourcetarget必须不同。

target

目标消息代理。从以下选项中进行选择:

  • LocalMqtt— 客户端设备通信的本地 MQTT 代理。

  • Pubsub— 当地的 Greengrass 发布/订阅消息代理。

  • IotCore— 这个Amazon IoT CoreMQTT 消息代理。

    注意

    MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理也是如此。因此,当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时,您可能会观察到额外的延迟Amazon IoT Core. 有关核心设备上 MQTT 配置的更多信息,请参阅配置 MQTT 超时和缓存设置.

sourcetarget必须不同。

例 示例:配置合并更新

以下示例配置更新指定将来自客户端设备的消息中继到Amazon IoT Core在clients/MyClientDevice1/hello/worldclients/MyClientDevice2/hello/world主题。

{ "mqttTopicMapping": { "ClientDevice1HelloWorld": { "topic": "clients/MyClientDevice1/hello/world", "source": "LocalMqtt", "target": "IotCore" }, "ClientDevice2HelloWorld": { "topic": "clients/MyClientDevice2/hello/world", "source": "LocalMqtt", "target": "IotCore" } } }

本地日志文件

此组件使用与Greengrass组件。

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log

查看此组件的日志

  • 在核心设备上运行以下命令以实时查看此组件的日志文件。Replace(替换)/greengrass/v2要么C:\greengrass\v2withAmazon IoT Greengrass根文件夹。

    Linux
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait

更改日志

下表描述该组件的每个版本中所做的更改。

Version

更改

2.2.2

错误修复和改进
  • 日志调整。

2.2.1

更新为 Greengrass ucleus 版本 2.7.0 的版本。

2.2.0

新功能
  • 添加对 MQTT 主题通配符的支持 (#+)当您指定本地发布/订阅作为源消息代理时。

    此功能需要 v2.6.0 或更高版本的Greengrass 核组件.

  • 添加targetTopicPrefix选项,您可以指定该选项将 MQTT 桥配置为在目标主题中继消息时为其添加前缀。

2.1.1

错误修复和改进
  • 修复了此组件如何处理配置重置更新的问题。

  • 减少证书轮换时 MQTT 客户端断开连接的频率。

2.1.0

新功能
  • 添加brokerUri参数,它使您能够使用非默认 MQTT 代理端口。

2.0.1

更新为 Greengrass ucleus 版本 2.4.0 的版本。

2.0.0

初始版本。