

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# MQTT 橋接器
<a name="mqtt-bridge-component"></a>

MQTT 橋接元件 (`aws.greengrass.clientdevices.mqtt.Bridge`) 會在用戶端裝置、本機 Greengrass 發佈/訂閱和 之間轉送 MQTT 訊息 AWS IoT Core。您可以使用此元件對自訂元件中用戶端裝置的 MQTT 訊息採取行動，並使用 同步用戶端裝置 AWS 雲端。

**注意**  <a name="client-device-component-context"></a>
用戶端裝置是連線至 Greengrass 核心裝置的本機 IoT 裝置，用於傳送 MQTT 訊息和要處理的資料。如需詳細資訊，請參閱[與本機 IoT 裝置互動](interact-with-local-iot-devices.md)。

您可以使用此元件在下列訊息代理程式之間轉送訊息：
+ Local MQTT – 本機 MQTT 代理程式會處理用戶端裝置和核心裝置之間的訊息。
+ 本機發佈/訂閱 – 本機 Greengrass 訊息代理程式會處理核心裝置上的元件之間的訊息。如需如何在 Greengrass 元件中與這些訊息互動的詳細資訊，請參閱 [發佈/訂閱本機訊息](ipc-publish-subscribe.md)。
+ AWS IoT Core – AWS IoT Core MQTT 中介裝置會處理 IoT 裝置和 AWS 雲端 目的地之間的訊息。如需如何在 Greengrass 元件中與這些訊息互動的詳細資訊，請參閱 [發佈/訂閱 AWS IoT Core MQTT 訊息](ipc-iot-core-mqtt.md)。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 MQTT 代理程式上的用戶端裝置轉送 MQTT 訊息時，您可能會發現額外的延遲 AWS IoT Core。如需核心裝置上 MQTT 組態的詳細資訊，請參閱 [設定 MQTT 逾時和快取設定](configure-greengrass-core-v2.md#configure-mqtt)。

**Topics**
+ [版本](#mqtt-bridge-component-versions)
+ [類型](#mqtt-bridge-component-type)
+ [作業系統](#mqtt-bridge-component-os-support)
+ [要求](#mqtt-bridge-component-requirements)
+ [相依性](#mqtt-bridge-component-dependencies)
+ [Configuration](#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

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

<a name="public-component-type-plugin-para1"></a>此元件是外掛程式元件 (`aws.greengrass.plugin`)。[Greengrass 核會在](greengrass-nucleus-component.md)與核相同的 Java 虛擬機器 (JVM) 中執行此元件。當您在核心裝置上變更此元件的版本時，核會重新啟動。

<a name="public-component-type-plugin-para2"></a>此元件使用與 Greengrass 核相同的日誌檔案。如需詳細資訊，請參閱[監控 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 或更新版本。將其設定為在代理程式操作所在的連接埠上連線。
+ MQTT 橋接器元件支援在 VPC 中執行。

## 相依性
<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)。

## Configuration
<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 開發人員指南*》中的 [MQTT 主題](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
若要搭配`Pubsub`來源代理程式使用 MQTT 主題萬用字元，您必須使用 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.6.0 或更新版本。  
`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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 MQTT 代理程式上的用戶端裝置轉送 MQTT 訊息時，您可能會發現額外的延遲 AWS IoT Core。如需核心裝置上 MQTT 組態的詳細資訊，請參閱 [設定 MQTT 逾時和快取設定](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 和 `target` 必須不同。

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"
        }
    }
}
```
`noLocal` 僅支援 `source`為 的路由`LocalMqtt`。  
預設：false  
retainAsPublished  
（選用） 啟用時，橋接器轉送的訊息具有與該路由發佈至代理程式的訊息相同的`retain`旗標。  
`retainAsPublished` 僅支援 `source`為 的路由`LocalMqtt`。  
預設：false

mqtt  
（選用） 用於與本機代理程式通訊的 MQTT 通訊協定設定。    
version  
（選用） 橋接器用來與本機代理程式通訊的 MQTT 通訊協定版本。必須與核心組態中選取的 MQTT 版本相同。  
請選擇下列項目：  
+ `mqtt3`
+ `mqtt5`
當`mqttTopicMapping`物件的 `source`或 `target` 欄位設定為 時，您必須部署 MQTT 代理程式`LocalMqtt`。如果您選擇 `mqtt5`選項，則必須使用 [MQTT 5 代理程式 (EMQX)](mqtt-broker-emqx-component.md)。  
預設：`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`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（選用） 本機 MQTT 代理程式的 URI。如果您將 MQTT 代理程式設定為使用與預設連接埠 8883 不同的連接埠，則必須指定此參數。使用下列格式，並將*連接埠*取代為 MQTT 中介裝置操作的連接埠：`ssl://localhost:port`。  
預設：`ssl://localhost:8883`

startupTimeoutSeconds  
（選用） 元件啟動的秒數上限。`BROKEN` 如果元件超過此逾時，元件的狀態會變更為 。  
預設：`120`

**Example 範例：組態合併更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
下列範例組態更新會指定下列項目：  
+ 在符合主題篩選條件`clients/+/hello/world`的主題 AWS IoT Core 上，將訊息從用戶端裝置轉送至 。
+ 將訊息從用戶端裝置轉送至本機發佈/訂閱符合`clients/+/detections`主題篩選條件的主題，並將`events/input/`字首新增至目標主題。產生的目標主題符合`events/input/clients/+/detections`主題篩選條件。
+ 在符合主題篩選條件`clients/+/status`的主題 AWS IoT Core 上，將訊息從用戶端裝置轉送至 ，並將`$aws/rules/StatusUpdateRule/`字首新增至目標主題。此範例會將這些訊息直接轉送至名為 的[AWS IoT 規則](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)`StatusUpdateRule`，以使用[基本擷取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.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 開發人員指南*》中的 [MQTT 主題](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
若要搭配`Pubsub`來源代理程式使用 MQTT 主題萬用字元，您必須使用 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.6.0 或更新版本。  
`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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 不同的連接埠，則必須指定此參數。使用下列格式，並將*連接埠*取代為 MQTT 中介裝置操作所在的連接埠：`ssl://localhost:port`。  
預設：`ssl://localhost:8883`

startupTimeoutSeconds  
（選用） 元件啟動的秒數上限。`BROKEN` 如果元件超過此逾時，元件的狀態會變更為 。  
預設：`120`

**Example 範例：組態合併更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
下列範例組態更新會指定下列項目：  
+ 在符合主題篩選條件`clients/+/hello/world`的主題 AWS IoT Core 上，將訊息從用戶端裝置轉送至 。
+ 在符合主題篩選條件`clients/+/detections`的主題上，將訊息從用戶端裝置轉送至本機發佈/訂閱，並將`events/input/`字首新增至目標主題。產生的目標主題符合`events/input/clients/+/detections`主題篩選條件。
+ 在符合主題篩選條件`clients/+/status`的主題 AWS IoT Core 上，將訊息從用戶端裝置轉送到 ，並將`$aws/rules/StatusUpdateRule/`字首新增至目標主題。此範例會將這些訊息直接轉送至名為 的[AWS IoT 規則](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)`StatusUpdateRule`，以使用[基本擷取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.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 開發人員指南*》中的 [MQTT 主題](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
若要搭配`Pubsub`來源代理程式使用 MQTT 主題萬用字元，您必須使用 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.6.0 或更新版本。  
`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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 不同的連接埠，則必須指定此參數。使用下列格式，並將*連接埠*取代為 MQTT 中介裝置操作所在的連接埠：`ssl://localhost:port`。  
預設：`ssl://localhost:8883`

**Example 範例：組態合併更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
下列範例組態更新會指定下列項目：  
+ 在符合主題篩選條件`clients/+/hello/world`的主題 AWS IoT Core 上，將訊息從用戶端裝置轉送至 。
+ 在符合主題篩選條件`clients/+/detections`的主題上，將訊息從用戶端裝置轉送至本機發佈/訂閱，並將`events/input/`字首新增至目標主題。產生的目標主題符合`events/input/clients/+/detections`主題篩選條件。
+ 在符合主題篩選條件`clients/+/status`的主題 AWS IoT Core 上，將訊息從用戶端裝置轉送到 ，並將`$aws/rules/StatusUpdateRule/`字首新增至目標主題。此範例會將這些訊息直接轉送至名為 的[AWS IoT 規則](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)`StatusUpdateRule`，以使用[基本擷取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.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 開發人員指南*》中的 [MQTT 主題](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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 不同的連接埠，則必須指定此參數。使用下列格式，並將*連接埠*取代為 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 開發人員指南*》中的 [MQTT 主題](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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 發佈/訂閱訊息代理程式。
+ `IotCore` – AWS IoT Core MQTT 訊息代理程式。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
MQTT 橋接器使用 QoS 1 來發佈和訂閱 AWS IoT Core，即使用戶端裝置使用 QoS 0 來發佈和訂閱本機 MQTT 代理程式也一樣。因此，當您從本機 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 核](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_tw/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
| 2.3.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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_tw/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_tw/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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_tw/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.0.1  |  此版本包含錯誤修正和改善。  | 
|  2.0.0  |  初始版本。  | 