

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

# MQTT 网桥
<a name="mqtt-bridge-component"></a>

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

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

您可以使用此组件，在以下消息代理之间中继消息：
+ 本地 MQTT – 本地 MQTT 5 代理处理客户端设备与核心设备之间的消息。
+ 本地 publish/subscribe — 本地 Greengrass 消息代理处理核心设备上组件之间的消息。有关如何在 Greengrass 组件中与这些消息交互的更多信息，请参阅[发布/订阅本地消息](ipc-publish-subscribe.md)。
+ AWS IoT Core — AWS IoT Core MQTT 代理处理物联网设备和 AWS Cloud 目标之间的消息。有关如何在 Greengrass 组件中与这些消息交互的更多信息，请参阅[发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。

**Topics**
+ [版本](#mqtt-bridge-component-versions)
+ [Type](#mqtt-bridge-component-type)
+ [操作系统](#mqtt-bridge-component-os-support)
+ [要求](#mqtt-bridge-component-requirements)
+ [依赖项](#mqtt-bridge-component-dependencies)
+ [配置](#mqtt-bridge-component-configuration)
+ [本地日志文件](#mqtt-bridge-component-log-file)
+ [更改日志](#mqtt-bridge-component-changelog)

## 版本
<a name="mqtt-bridge-component-versions"></a>

此组件具有以下版本：
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="mqtt-bridge-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="mqtt-bridge-component-os-support"></a>

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

## 要求
<a name="mqtt-bridge-component-requirements"></a>

此组件具有以下要求：
+ 如果您将核心设备的 MQTT 代理组件配置为使用默认端口 8883 以外的端口，则必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为在代理运行的端口进行连接。
+ 支持在 VPC 中运行 MQTT 网桥组件。

## 依赖项
<a name="mqtt-bridge-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#mqtt-bridge-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.3.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 硬性 | 

------
#### [ 2.3.0 and 2.3.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 2.2.5 and 2.2.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 2.2.3 and 2.2.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.4.0 | 硬性 | 

------
#### [ 2.2.0 – 2.2.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.3.0 | 硬性 | 

------
#### [ 2.1.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.2.0 | 硬性 | 

------
#### [ 2.0.0 to 2.1.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.1.0 | 硬性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="mqtt-bridge-component-configuration"></a>

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

------
#### [ 2.3.0 – 2.3.2 ]

`mqttTopicMapping`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
您可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
要在 `Pubsub` 源代理中使用 MQTT 主题通配符，您必须使用 v2.6.0 或更高版本的 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)。  
`targetTopicPrefix`  
此组件中继消息时要添加到目标主题的前缀。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

mqtt5 RouteOptions  
（可选）提供用于配置主题映射的选项，以便将消息从源主题桥接到目标主题。  
该对象包含以下信息：    
*mqtt5RouteOptionsNameKey*  
用于主题映射的路由选项的名称。*mqtt5RouteOptionsNameKey*替换为`mqttTopicMapping`字段中*topicMappingNameKey*定义的匹配项。  
该对象包含以下信息：    
noLocal  
（可选）启用后，网桥不会转发有关网桥本身发布的主题的消息。使用此参数可防止循环，如下所示：  

```
{
    "mqtt5RouteOptions": {
        "toIoTCore": {
            "noLocal": true
        }
    },
    "mqttTopicMapping": {
        "toIoTCore": {
            "topic": "device",
            "source": "LocalMqtt",
            "target": "IotCore"
        },
        "toLocal": {
            "topic": "device",
            "source": "IotCore",
            "target": "LocalMqtt"
        }
    }
}
```
只有 `source` 为 `LocalMqtt` 的路由支持 `noLocal`。  
默认：false  
retainAsPublished  
（可选）启用后，网桥转发的消息与向该路由的代理发布的消息具有相同的 `retain` 标志。  
只有 `source` 为 `LocalMqtt` 的路由支持 `retainAsPublished`。  
默认：false

mqtt  
（可选）用于与本地代理通信的 MQTT 协议设置。    
version  
（可选）网桥用于与本地代理通信的 MQTT 协议版本。必须与在内核配置中选择的 MQTT 版本相同。  
请从以下内容中选择：  
+ `mqtt3`
+ `mqtt5`
当 `mqttTopicMapping` 对象的 `source` 或 `target` 字段设置为 `LocalMqtt` 时，您必须部署 MQTT 代理。如果选择 `mqtt5` 选项，您必须使用 [MQTT 5 代理（EMQX）](mqtt-broker-emqx-component.md)。  
默认值：`mqtt3`  
ackTimeoutSeconds  
（可选）在操作失败之前等待 PUBACK、SUBACK 或 UNSUBACK 包的时间间隔。  
默认值：60  
connAckTimeout女士  
（可选）在关闭连接之前等待 CONNACK 包的时间间隔。  
默认值：20000（20 秒）  
pingTimeoutMs  
（可选）网桥等待从本地代理接收 PINGACK 消息的时长（以毫秒为单位）。如果等待时间超过了超时时间，则网桥将关闭并重新打开 MQTT 连接。此值必须小于 `keepAliveTimeoutSeconds`。  
默认值：30000（30 秒）  
keepAliveTimeout秒  
（可选）网桥为保持 MQTT 连接处于活动状态而发送的每条 PING 消息之间的时间（以秒为单位）。此值必须大于 `pingTimeoutMs`。  
默认值：60  
maxReconnectDelay女士  
（可选）MQTT 重新连接的最长时间（以秒为单位）。  
默认值：30000（30 秒）  
minReconnectDelay女士  
（可选）MQTT 重新连接的最短时间（以秒为单位）。  
receiveMaximum  
（可选）网桥可以发送的未确认 QoS1 数据包的最大数量。  
默认值：100  
maximumPacketSize  
客户端将接受的 MQTT 包的最大字节数。  
默认值：null（无限制）  
sessionExpiryInterval  
（可选）您可以请求在网桥和本地代理之间持续会话的时长（以秒为单位）。  
默认值：4294967295（会话永不过期）

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`120`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
以下示例配置更新可指定以下内容：  
+ 将来自客户端设备的消息中继到与 AWS IoT Core 主题过滤器匹配`clients/+/hello/world`的主题。
+ 将与主题过滤器匹配的 publish/subscribe 主题的消息从客户端设备中继到`clients/+/detections`本地，并将`events/input/`前缀添加到目标主题。生成的目标主题与 `events/input/clients/+/detections` 主题筛选条件匹配。
+ 将来自客户端设备的消息中继到 AWS IoT Core 与主题过滤器匹配`clients/+/status`的主题，并在目标主题中添加`$aws/rules/StatusUpdateRule/`前缀。此示例使用[基本摄取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)，直接将这些消息直接中继到名为 `StatusUpdateRule` 的 [AWS IoT 规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)，以降低成本。

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

**Example 示例：配置 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`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
您可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
要在 `Pubsub` 源代理中使用 MQTT 主题通配符，您必须使用 v2.6.0 或更高版本的 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)。  
`targetTopicPrefix`  
此组件中继消息时要添加到目标主题的前缀。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`120`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
以下示例配置更新可指定以下内容：  
+ 将来自客户端设备的消息中继到与 AWS IoT Core 主题过滤器匹配`clients/+/hello/world`的主题。
+ 将与主题过滤器匹配的 publish/subscribe 主题的消息从客户端设备中继到`clients/+/detections`本地，并将`events/input/`前缀添加到目标主题。生成的目标主题与 `events/input/clients/+/detections` 主题筛选条件匹配。
+ 将来自客户端设备的消息中继到 AWS IoT Core 与主题过滤器匹配`clients/+/status`的主题，并在目标主题中添加`$aws/rules/StatusUpdateRule/`前缀。此示例使用[基本摄取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)，直接将这些消息直接中继到名为 `StatusUpdateRule` 的 [AWS IoT 规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)，以降低成本。

```
{
  "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`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
您可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
要在 `Pubsub` 源代理中使用 MQTT 主题通配符，您必须使用 v2.6.0 或更高版本的 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)。  
`targetTopicPrefix`  
此组件中继消息时要添加到目标主题的前缀。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
以下示例配置更新可指定以下内容：  
+ 将来自客户端设备的消息中继到与 AWS IoT Core 主题过滤器匹配`clients/+/hello/world`的主题。
+ 将与主题过滤器匹配的 publish/subscribe 主题的消息从客户端设备中继到`clients/+/detections`本地，并将`events/input/`前缀添加到目标主题。生成的目标主题与 `events/input/clients/+/detections` 主题筛选条件匹配。
+ 将来自客户端设备的消息中继到 AWS IoT Core 与主题过滤器匹配`clients/+/status`的主题，并在目标主题中添加`$aws/rules/StatusUpdateRule/`前缀。此示例使用[基本摄取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)，直接将这些消息直接中继到名为 `StatusUpdateRule` 的 [AWS IoT 规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)，以降低成本。

```
{
  "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`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping"></a>
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
如果您指定 `LocalMqtt` 或 `IotCore` 源代理，则可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-no-prefix"></a>
以下示例配置更新指定将来自客户端设备的消息中继到`clients/MyClientDevice1/hello/world`和`clients/MyClientDevice2/hello/world`主题 AWS 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`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping"></a>
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
如果您指定 `LocalMqtt` 或 `IotCore` 源代理，则可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-no-prefix"></a>
以下示例配置更新指定将来自客户端设备的消息中继到`clients/MyClientDevice1/hello/world`和`clients/MyClientDevice2/hello/world`主题 AWS IoT Core 上。  

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

------

## 本地日志文件
<a name="mqtt-bridge-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="mqtt-bridge-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.2  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.5.0 发行版进行了版本更新。  | 
| 2.3.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
| 2.3.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.6  |  <a name="changelog-mqtt-bridge-2.2.6"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.5  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.4.0 发行版进行了版本更新。  | 
|  2.2.4  |  对 Greengrass [客户端设备身份验证](client-device-auth-component.md)版本 2.3.0 发行版进行了版本更新。  | 
|  2.2.3  |  此版本包含错误修复和改进。  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.0  |  <a name="changelog-mqtt-bridge-2.2.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.0.1  |  此版本包括错误修复和改进。  | 
|  2.0.0  |  初始版本。  | 