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

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

MQTT 网桥

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

注意

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

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

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

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

  • Amazon IoT Core – Amazon IoT Core MQTT 代理处理 IoT 设备与 Amazon Web Services 云 目标之间的消息。有关如何在 Greengrass 组件中与这些消息交互的更多信息,请参阅发布/订阅消息 Amazon IoT Core MQTT

    注意

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

版本

此组件具有以下版本:

  • 2.3.x

  • 2.2.x

  • 2.1.x

  • 2.0.x

类型

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

此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息,请参阅 监控 Amazon IoT Greengrass 日志

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

操作系统

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

  • Linux

  • Windows

要求

此组件具有以下要求:

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

  • 支持在 VPC 中运行 MQTT 网桥组件。

依赖项

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

2.3.2

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

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.2.0 <2.6.0 硬性
2.3.0 and 2.3.1

下表列出了此组件版本 2.3.0 和 2.3.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.2.0 <2.5.0 硬性
2.2.5 and 2.2.6

下表列出了此组件的版本 2.2.5 和 2.2.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.2.0 <2.5.0 硬性
2.2.3 and 2.2.4

下表列出了此组件的版本 2.2.3 和 2.2.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.2.0 <2.4.0 硬性
2.2.0 – 2.2.2

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

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.2.0 <2.3.0 硬性
2.1.1

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

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.0.0 <2.2.0 硬性
2.0.0 to 2.1.0

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

依赖关系 兼容版本 依赖关系类型
客户端设备身份验证 >=2.0.0 <2.1.0 硬性

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

配置

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

2.3.0 – 2.3.2
mqttTopicMapping

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

该对象包含以下信息:

topicMappingNameKey

此主题映射的名称。将 topicMappingNameKey 替换为可帮助您识别此主题映射的名称。

该对象包含以下信息:

topic

用于在源代理和目标代理之间桥接的主题或主题筛选条件。

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

注意

要在 Pubsub 源代理中使用 MQTT 主题通配符,您必须使用 v2.6.0 或更高版本的 Greengrass Nucleus 组件

targetTopicPrefix

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

source

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

target

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

mqtt5RouteOptions

(可选)提供用于配置主题映射的选项,以便将消息从源主题桥接到目标主题。

该对象包含以下信息:

mqtt5RouteOptionsNameKey

用于主题映射的路由选项的名称。将 mqtt5RouteOptionsNameKey 替换为 mqttTopicMapping 字段中的匹配 topicMappingNameKey

该对象包含以下信息:

noLocal

(可选)启用后,网桥不会转发有关网桥本身发布的主题的消息。使用此参数可防止循环,如下所示:

{ "mqtt5RouteOptions": { "toIoTCore": { "noLocal": true } }, "mqttTopicMapping": { "toIoTCore": { "topic": "device", "source": "LocalMqtt", "target": "IotCore" }, "toLocal": { "topic": "device", "source": "IotCore", "target": "LocalMqtt" } } }

只有 sourceLocalMqtt 的路由支持 noLocal

默认:false

retainAsPublished

(可选)启用后,网桥转发的消息与向该路由的代理发布的消息具有相同的 retain 标志。

只有 sourceLocalMqtt 的路由支持 retainAsPublished

默认:false

mqtt

(可选)用于与本地代理通信的 MQTT 协议设置。

版本

(可选)网桥用于与本地代理通信的 MQTT 协议版本。必须与在内核配置中选择的 MQTT 版本相同。

请从以下内容中选择:

  • mqtt3

  • mqtt5

mqttTopicMapping 对象的 sourcetarget 字段设置为 LocalMqtt 时,您必须部署 MQTT 代理。如果选择 mqtt5 选项,您必须使用 MQTT5 经纪人 (EMQX)

默认:mqtt3

ackTimeoutSeconds

(可选)在操作失败之前等待 PUBACK、SUBACK 或 UNSUBACK 包的时间间隔。

默认值:60

connAckTimeoutMs

(可选)在关闭连接之前等待 CONNACK 包的时间间隔。

默认值:20000(20 秒)

pingTimeoutMs

(可选)网桥等待从本地代理接收 PINGACK 消息的时长(以毫秒为单位)。如果等待时间超过了超时时间,则网桥将关闭并重新打开 MQTT 连接。此值必须小于 keepAliveTimeoutSeconds

默认值:30000(30 秒)

keepAliveTimeoutSeconds

(可选)网桥为保持 MQTT 连接处于活动状态而发送的每条 PING 消息之间的时间(以秒为单位)。此值必须大于 pingTimeoutMs

默认值:60

maxReconnectDelayMs

(可选)MQTT 重新连接的最长时间(以秒为单位)。

默认值:30000(30 秒)

minReconnectDelayMs

(可选)MQTT 重新连接的最短时间(以秒为单位)。

receiveMaximum

(可选)网桥可以发送的未确认 QoS1 数据包的最大数量。

默认值:100

maximumPacketSize

客户端将接受的 MQTT 包的最大字节数。

默认值:null(无限制)

sessionExpiryInterval

(可选)您可以请求在网桥和本地代理之间持续会话的时长(以秒为单位)。

默认值:4294967295(会话永不过期)

brokerUri

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

默认:ssl://localhost:8883

startupTimeoutSeconds

(可选)组件启动的最长时间(以秒为单位)。如果时间超过此超时时间,则组件的状态将更改为 BROKEN

默认:120

例 示例:配置合并更新

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

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

  • 将消息从客户端设备中继到与 clients/+/detections 主题筛选条件匹配的主题上的本地发布/订阅,并在目标主题中添加 events/input/ 前缀。生成的目标主题与 events/input/clients/+/detections 主题筛选条件匹配。

  • 将消息从客户端设备中继到与 clients/+/status 主题筛选条件匹配的主题上的 Amazon IoT Core,并在目标主题中添加 $aws/rules/StatusUpdateRule/ 前缀。此示例使用基本摄取,直接将这些消息直接中继到名为 StatusUpdateRuleAmazon IoT 规则,以降低成本。

{ "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" } } }
例 示例:配置 MQTT 5

以下示例配置更新以下内容:

  • 允许网桥在本地代理中使用 MQTT 5 协议。

  • 将 MQTT 保留配置为 ClientDeviceHelloWorld 主题映射的已发布设置。

{ "mqttTopicMapping": { "ClientDeviceHelloWorld": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" } }, "mqtt5RouteOptions": { "ClientDeviceHelloWorld": { "retainAsPublished": true } }, "mqtt": { "version": "mqtt5" } }
2.2.6
mqttTopicMapping

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

该对象包含以下信息:

topicMappingNameKey

此主题映射的名称。将 topicMappingNameKey 替换为可帮助您识别此主题映射的名称。

该对象包含以下信息:

topic

用于在源代理和目标代理之间桥接的主题或主题筛选条件。

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

注意

要在 Pubsub 源代理中使用 MQTT 主题通配符,您必须使用 v2.6.0 或更高版本的 Greengrass Nucleus 组件

targetTopicPrefix

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

source

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

target

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

brokerUri

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

默认:ssl://localhost:8883

startupTimeoutSeconds

(可选)组件启动的最长时间(以秒为单位)。如果时间超过此超时时间,则组件的状态将更改为 BROKEN

默认:120

例 示例:配置合并更新

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

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

  • 将消息从客户端设备中继到与 clients/+/detections 主题筛选条件匹配的主题上的本地发布/订阅,并在目标主题中添加 events/input/ 前缀。生成的目标主题与 events/input/clients/+/detections 主题筛选条件匹配。

  • 将消息从客户端设备中继到与 clients/+/status 主题筛选条件匹配的主题上的 Amazon IoT Core,并在目标主题中添加 $aws/rules/StatusUpdateRule/ 前缀。此示例使用基本摄取,直接将这些消息直接中继到名为 StatusUpdateRuleAmazon IoT 规则,以降低成本。

{ "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.2.0 - 2.2.5
mqttTopicMapping

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

该对象包含以下信息:

topicMappingNameKey

此主题映射的名称。将 topicMappingNameKey 替换为可帮助您识别此主题映射的名称。

该对象包含以下信息:

topic

用于在源代理和目标代理之间桥接的主题或主题筛选条件。

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

注意

要在 Pubsub 源代理中使用 MQTT 主题通配符,您必须使用 v2.6.0 或更高版本的 Greengrass Nucleus 组件

targetTopicPrefix

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

source

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

target

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

brokerUri

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

默认:ssl://localhost:8883

例 示例:配置合并更新

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

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

  • 将消息从客户端设备中继到与 clients/+/detections 主题筛选条件匹配的主题上的本地发布/订阅,并在目标主题中添加 events/input/ 前缀。生成的目标主题与 events/input/clients/+/detections 主题筛选条件匹配。

  • 将消息从客户端设备中继到与 clients/+/status 主题筛选条件匹配的主题上的 Amazon IoT Core,并在目标主题中添加 $aws/rules/StatusUpdateRule/ 前缀。此示例使用基本摄取,直接将这些消息直接中继到名为 StatusUpdateRuleAmazon IoT 规则,以降低成本。

{ "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

此主题映射的名称。将 topicMappingNameKey 替换为可帮助您识别此主题映射的名称。

该对象包含以下信息:

topic

用于在源代理和目标代理之间桥接的主题或主题筛选条件。

如果您指定 LocalMqttIotCore 源代理,则可以使用 +# MQTT 主题通配符,中继与主题筛选条件匹配的所有主题上的消息。有关更多信息,请参阅《Amazon IoT Core 开发人员指南》中的 MMQTT 主题

source

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

target

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

brokerUri

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

默认:ssl://localhost:8883

例 示例:配置合并更新

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

{ "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

此主题映射的名称。将 topicMappingNameKey 替换为可帮助您识别此主题映射的名称。

该对象包含以下信息:

topic

用于在源代理和目标代理之间桥接的主题或主题筛选条件。

如果您指定 LocalMqttIotCore 源代理,则可以使用 +# MQTT 主题通配符,中继与主题筛选条件匹配的所有主题上的消息。有关更多信息,请参阅《Amazon IoT Core 开发人员指南》中的 MMQTT 主题

source

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

target

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

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

  • Pubsub – 本地 Greengrass 发布/订阅消息代理。

  • IotCore – Amazon IoT Core MQTT 消息代理。

    注意

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

sourcetarget 必须不同。

例 示例:配置合并更新

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

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

本地日志文件

此组件使用与 Greengrass Nucleus 组件相同的日志文件。

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。将 /greengrass/v2C:\greengrass\v2 替换为 Amazon IoT Greengrass 根文件夹的路径。

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

更改日志

下表介绍每个组件版本的更改。

版本

更改

2.3.2

客户端设备身份验证版本 2.5.0 发行版进行了版本更新。

2.3.1
错误修复和改进

修复了以下问题:本地 MQTT 客户端进入断开连接循环。

2.3.0
新功能

添加了 MQTT5 支持,在 Amazon IoT Core 与本地 MQTT 源之间进行桥接。

2.2.6

新功能

增加了新的 startupTimeoutSeconds 配置选项。

2.2.5

客户端设备身份验证版本 2.4.0 发行版进行了版本更新。

2.2.4

对 Greengrass 客户端设备身份验证版本 2.3.0 发行版进行了版本更新。

2.2.3

此版本包含错误修复和改进。

2.2.2

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

2.2.1

错误修复和改进

修复了可能导致 MQTT 网桥无法订阅 MQTT 主题的问题。

2.2.0

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

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

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

2.1.1

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

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

2.1.0

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

2.0.1

此版本包括错误修复和改进。

2.0.0

初始版本。