本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
MQTT 5 經紀商
EMQX MQTT 代理組件(aws.greengrass.clientdevices.mqtt.EMQX
)處理客戶端設備和 Greengrass 核心設備之間的 MQTT 消息。此元件提供 EMQX MQ
此代理程式會實作 MQTT 5.0 通訊協定。它包括對工作階段和訊息到期間隔、使用者屬性、共用訂閱、主題別名等的支援。MQTT 5 與 MQTT 3.1.1 向後兼容,因此,如果您運行 Moquette MQTT 3.1.1 代理商,則可以將其替換為 EMQX MQTT 5 代理商,並且客戶端設備可以繼續連接並像往常一樣運行。
注意
用戶端裝置是連線到 Greengrass 核心裝置以傳送 MQTT 訊息和資料進行處理的本機 IoT 裝置。如需詳細資訊,請參閱 與本機 IoT 裝置互動。
版本
此元件具有下列版本:
-
2.0.x
-
1.2.x
-
1.x
-
1.0.x
Type
此元件是一般元件 (aws.greengrass.generic
)。Greengrass 核會執行元件的生命週期指令碼。
如需詳細資訊,請參閱 元件類型。
作業系統
此元件可安裝在執行下列作業系統的核心裝置上:
Linux
Windows
要求
此元件具有下列需求:
-
核心裝置必須能夠在 MQTT 代理程式運作的連接埠上接受連線。此元件預設會在連接埠 8883 上執行 MQTT 代理程式。您可以在設定此元件時指定不同的連接埠。
如果您指定不同的連接埠,並使用 MQTT 橋接器元件將 MQTT 訊息轉送給其他代理程式,則必須使用 MQTT 橋接器 v2.1.0 或更新版本。將其設定為使用 MQTT 代理程式運作的連接埠。
如果您指定不同的連接埠,並使用 IP 偵測器元件來管理 MQTT 代理程式端點,則必須使用 IP 偵測器 v2.1.0 或更新版本。將其設定為報告 MQTT 代理程式運作的連接埠。
-
在 Linux 核心設備上,在核心設備上安裝和配置 Docker:
-
碼頭引擎
1.9.1 或更高版本安裝在 Greengrass 核心設備上。版本 20.10 是經過驗證可與 AWS IoT Greengrass 核心軟件配合使用的最新版本。在部署執行 Docker 容器的元件之前,您必須直接在核心裝置上安裝 Docker。 -
在您部署此元件之前,Docker 精靈會在核心裝置上啟動並執行。
-
執行此元件的系統使用者必須具有 root 或管理員權限。或者,您可以在
docker
群組中以系統使用者的身分執行此元件,並將false
此元件的requiresPrivileges
選項設定為在沒有權限的情況下執行 EQMX MQTT 代理程式。
-
-
支援 EMQX MQTT 代理程式元件在 VPC 中執行。
-
平台上不支援 EMQX MQTT 代理程式元件。
armv7
相依性
部署元件時, AWS IoT Greengrass 也會部署其相依性的相容版本。這表示您必須符合元件及其所有相依性的需求,才能成功部署元件。本節列出此元件之已發行版本的相依性,以及定義每個相依性之元件版本的語意版本條件約束。您也可以在AWS IoT Greengrass 主控台
- 2.0.1
-
下表列出此元件 2.0.1 版的相依性。
相依性 兼容版本 相依性類型 用戶端裝置驗證 >=2.2.0 硬式 - 2.0.0
-
下表列出此元件 2.0.0 版的相依性。
相依性 兼容版本 相依性類型 用戶端裝置驗證 >=2.2.0 硬式 - 1.2.2 – 1.2.3
-
下表列出此元件 1.2.2 至 1.2.3 版的相依性。
相依性 兼容版本 相依性類型 用戶端裝置驗證 >=2.2.0 硬式 - 1.2.0 and 1.2.1
-
下表列出此元件 1.2.0 和 1.2.1 版的相依性。
相依性 兼容版本 相依性類型 用戶端裝置驗證 >=2.2.0 硬式 - 1.0.0 and 1.1.0
-
下表列出此元件 1.0.0 和 1.1.0 版的相依性。
相依性 兼容版本 相依性類型 用戶端裝置驗證 >=2.2.0 硬式
如需有關元件相依性的詳細資訊,請參閱元件方案參考。
組態
- 2.0.0 - 2.0.1
-
此元件提供下列組態參數,您可以在部署元件時自訂這些參數。
重要
如果您使用 MQTT 5 代理程式 (EMQX) 元件的第 2 版,則必須更新您的組態檔案。版本 1 設定檔不適用於版本 2。
- EMQX 配置
-
(選擇性) 要使用的 EMQX MQTT 代理
程式組態。您可以在此元件中設定 EMQX 組態選項。 當您使用 EMQX 代理程式時,Greengrass 會使用預設設定。除非您使用此欄位進行修改,否則會使用此組態。
修改下列組態設定會導致 EMQX 代理程式元件重新啟動。其他組態變更會套用而不重新啟動元件。
-
emqxConfig/cluster
-
emqxConfig/node
-
emqxConfig/rpc
注意
aws.greengrass.clientdevices.mqtt.EMQX
可讓您設定敏感安全性選項。其中包括 TLS 設定、驗證和授權提供者。我們建議使用相互 TLS 驗證的預設設定,以及 Greengrass 用戶端裝置驗證提供者。範例:預設組態
下列範例顯示為 MQTT 5 (EMQX) 代理程式設定的預設值。您可以使用組態設定覆寫這些
emqxConfig
設定。{ "authorization": { "no_match": "deny", "sources": [] }, "node": { "cookie": "
<placeholder>
" }, "listeners": { "ssl": { "default": { "ssl_options": { "keyfile": "{work:path}\\data\\key.pem", "certfile": "{work:path}\\data\\cert.pem", "cacertfile": null, "verify": "verify_peer", "versions": ["tlsv1.3", "tlsv1.2"], "fail_if_no_peer_cert": true } } }, "tcp": { "default": { "enabled": false } }, "ws": { "default": { "enabled": false } }, "wss": { "default": { "enabled": false } } }, "plugins": { "states": [{"name_vsn": "gg-1.0.0", "enable": true}], "install_dir": "plugins" } } -
- 认证模式
-
(選擇性) 設定代理程式的授權提供者。可以是下列其中一個值:
-
enabled
— (預設) 使用 Greengrass 驗證和授權提供者。 -
bypass_on_failure
— 如果 Greengrass 拒絕驗證或授權,請使用 Greengrass 驗證提供者,然後使用 EMQX 提供者鏈中任何剩餘的驗證提供者。 -
bypass
— 格 Greengrass 提供者已停用。身份驗證和授權由 EMQX 提供商鏈處理。
-
requiresPrivilege
-
(選擇性) 在 Linux 核心裝置上,您可以指定在沒有 root 權限或系統管理員權限的情況下執行 EMQX MQTT 代理程式。如果將此選項設定為
false
,則執行此元件的系統使用者必須是docker
群組的成員。預設:
true
startupTimeoutSeconds
-
(選擇性) EMQX MQTT 代理程式啟動的時間上限 (以秒為單位)。
BROKEN
如果超過此逾時,組件的狀態會變更為。預設:
90
ipcTimeoutSeconds
-
(選擇性) 元件等待 Greengrass 核心回應處理序間通訊 (IPC) 要求的時間上限 (以秒為單位)。如果此元件在檢查用戶端裝置是否獲得授權時報告逾時錯誤,請增加此數字。
預設:
5
crtLogLevel
-
(選擇性)「一 AWS 般執行階段」(CRT) 程式庫的記錄層級。
預設值為 EMQX MQTT 代理程式記錄層級 (在中)。
log.level
emqx
restartIdentifier
-
(選擇性) 設定此選項以重新啟動 EMQX MQTT 代理程式。當此組態值變更時,此元件會重新啟動 MQTT 代理程式。您可以使用此選項強制用戶端裝置中斷連線。
dockerOptions
-
(選擇性) 僅在 Linux 作業系統上設定此選項,以將參數新增至 Docker 命令列。例如,若要對應其他連接埠,請使用
-p
Docker 參數:"-p 1883:1883"
範例:將 v1.x 組態檔案更新為 v2.x
下列範例顯示將 v1.x 組態檔更新為 2.x 版所需的變更。
版本 1.x 配置文件:
{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" } }
v2 的對等配置文件:
{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": "8883", "max_connections": "1024000", "max_conn_rate": "500", "handshake_timeout": "15s" } } }, "log": { "console": { "enable": true, "level": "warning" } } }, "authMode": "enabled" }
沒有等同於
listener.ssl.external.rate_limit
組態項目。組use_greengrass_managed_certificates
態選項已移除。範例:為代理程式設定新的連接埠
下列範例會將 MQTT 代理程式運作的連接埠,從預設的 8883 變更為連接埠 1234。如果您使用的是 Linux,請包括
dockerOptions
欄位。{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": 1234 } } } }, "dockerOptions": "-p 1234:1234" }
範例:調整 MQTT 代理程式的記錄層級
下列範例會將 MQTT 代理程式的記錄層級變更為。
debug
您可以從下列記錄層級中選擇:-
debug
-
info
-
notice
-
warning
-
error
-
critical
-
alert
-
emergency
預設記錄層級為
warning
。{ "emqxConfig": { "log": { "console": { "level": "debug" } } } }
範例:啟用 EMQX 儀表板
以下示例啟用 EMQX 儀表板,以便您可以監視和管理經紀人。如果您使用的是 Linux,請包括
dockerOptions
欄位。{ "emqxConfig": { "dashboard": { "listeners": { "http": { "bind": 18083 } } } }, "dockerOptions": "-p 18083:18083" }
- 1.0.0 - 1.2.2
-
此元件提供下列組態參數,您可以在部署元件時自訂這些參數。
emqx
-
(選擇性) 要使用的 EMQX MQTT 代理
程式組態。您可以在此元件中設定 EMQX 組態選項的子集。 此物件包含下列資訊:
listener.ssl.external
-
(選擇性) MQTT 代理程式運作的連接埠。
注意
如果您指定不同的連接埠,並使用 MQTT 橋接器元件將 MQTT 訊息轉送給其他代理程式,則必須使用 MQTT 橋接器 v2.1.0 或更新版本。將其設定為使用 MQTT 代理程式運作的連接埠。
如果您指定不同的連接埠,並使用 IP 偵測器元件來管理 MQTT 代理程式端點,則必須使用 IP 偵測器 v2.1.0 或更新版本。將其設定為報告 MQTT 代理程式運作的連接埠。
預設:
8883
listener.ssl.external.max_connections
-
(選擇性) MQTT 代理程式支援的同時連線數目上限。
預設:
1024000
listener.ssl.external.max_conn_rate
-
(選擇性) MQTT 代理程式每秒可接收的新連線數目上限。
預設:
500
listener.ssl.external.rate_limit
-
(選擇性) 所有連線至 MQTT 代理程式的頻寬限制。指定該頻寬的頻寬和持續時間,並以逗號 (
,
) 分隔,格式如下:bandwidth,duration
例如,您可以指50KB,5s
定每 5 秒將 MQTT 代理程式限制為 50 KB 的資料。 listener.ssl.external.handshake_timeout
-
(選擇性) MQTT 代理程式等待完成驗證新連線的時間量。
預設:
15s
mqtt.max_packet_size
-
(選擇性) MQTT 郵件的大小上限。
預設值:
268435455
(256 MB 減去 1) log.level
-
(選擇性) MQTT 代理程式的記錄層級。您可以從以下選項中選擇:
-
debug
-
info
-
notice
-
warning
-
error
-
critical
-
alert
-
emergency
預設記錄層級為
warning
。 -
requiresPrivilege
-
(選擇性) 在 Linux 核心裝置上,您可以指定在沒有 root 權限或系統管理員權限的情況下執行 EMQX MQTT 代理程式。如果將此選項設定為
false
,則執行此元件的系統使用者必須是docker
群組的成員。預設:
true
startupTimeoutSeconds
-
(選擇性) EMQX MQTT 代理程式啟動的時間上限 (以秒為單位)。
BROKEN
如果超過此逾時,組件的狀態會變更為。預設:
90
ipcTimeoutSeconds
-
(選擇性) 元件等待 Greengrass 核心回應處理序間通訊 (IPC) 要求的時間上限 (以秒為單位)。如果此元件在檢查用戶端裝置是否獲得授權時報告逾時錯誤,請增加此數字。
預設:
5
crtLogLevel
-
(選擇性)「一 AWS 般執行階段」(CRT) 程式庫的記錄層級。
預設值為 EMQX MQTT 代理程式記錄層級 (在中)。
log.level
emqx
restartIdentifier
-
(選擇性) 設定此選項以重新啟動 EMQX MQTT 代理程式。當此組態值變更時,此元件會重新啟動 MQTT 代理程式。您可以使用此選項強制用戶端裝置中斷連線。
dockerOptions
-
(選擇性) 僅在 Linux 作業系統上設定此選項,以將參數新增至 Docker 命令列。例如,若要對應其他連接埠,請使用
-p
Docker 參數:"-p 1883:1883"
mergeConfigurationFiles
-
(選擇性) 設定此選項以新增或覆寫指定 EMQX 組態檔案中的預設值。如需有關組態檔及其格式的資訊,請參閱 EMQX 4.0 文件中的組態
。您指定的值會附加到組態檔案中。 下列範例會更新
etc/emqx.conf
檔案。"mergeConfigurationFiles": { "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s" },
除了 EMQX 支持的配置文件,Greengrass 支持配置格雷格拉斯身份驗證插件 EMQX 稱為一個文件。
etc/plugins/aws_greengrass_emqx_auth.conf
有兩個支援的選項,auth_mode
以及use_greengrass_managed_certificates
。要使用另一個身份驗證提供程序,請將auth_mode
選項設置為以下之一:-
enabled
— (預設) 使用 Greengrass 驗證和授權提供者。 -
bypass_on_failure
— 如果 Greengrass 拒絕驗證或授權,請使用 Greengrass 驗證提供者,然後使用 EMQX 提供者鏈中任何剩餘的驗證提供者。 -
bypass
— 格 Greengrass 提供者已停用。然後由 EMQX 提供商鏈處理身份驗證和授權。
如果
use_greengrass_managed_certificates
是true
,則此選項表示 Greengrass 管理代理程式 TLS 憑證。如果false
,則表示您透過其他來源提供憑證。下列範例會更新組
etc/plugins/aws_greengrass_emqx_auth.conf
態檔案中的預設值。"mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" },
注意
aws.greengrass.clientdevices.mqtt.EMQX
可讓您設定敏感安全性選項。其中包括 TLS 設定、驗證和授權提供者。建議的組態是使用相互 TLS 驗證和 Greengrass 用戶端裝置驗證提供者的預設組態。 -
replaceConfigurationFiles
-
(選擇性) 設定此選項以取代指定的 EMQX 組態檔。您指定的值會取代整個既有的組態檔案。您無法在此區段中指定
etc/emqx.conf
檔案。您必須使用mergeConfigurationFile
來修改etc/emqx.conf
。
範例:組態合併更新
下列範例組態指定在連接埠 443 上操作 MQTT 代理程式。
{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "requiresPrivilege": "true", "startupTimeoutSeconds": "90", "ipcTimeoutSeconds": "5" }
本機記錄檔
此元件會使用下列記錄檔。
- Linux
-
/logs/aws.greengrass.clientdevices.mqtt.EMQX.log/greengrass/v2
- Windows
-
C:\greengrass\v2
\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
若要檢視此元件的記錄
-
在核心裝置上執行下列命令,即時檢視此元件的記錄檔。以 AWS IoT Greengrass 根資料夾的路徑取代
或/greengrass/v2
C:\greengrass\v2
。- Linux
-
sudo tail -f
/logs/aws.greengrass.clientdevices.mqtt.EMQX.log/greengrass/v2
- Windows (PowerShell)
-
Get-Content
C:\greengrass\v2
\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait
授權
在 Windows 操作系統上,該軟件包括根據 Microsoft 軟件許可條款分發的代碼-Microsoft 視覺工作室社區 2022
此元件根據 Greengrass 核心軟體
變更記錄
下表說明元件每個版本的變更。
- v2.x
- v1.x
-
版本
變更
1.2.3
- 錯誤修復和改進
-
-
修正用戶端先前透過中斷連線並重新驗證用戶端進行驗證後,無法與 EMQX 互動的問題。
-
1.2.2
版本更新了客戶端設備身份驗證版本 2.4.0 版本。
1.2.1
- 錯誤修復和改進
-
-
修正如果 Visual C++ 可再散發程式尚未存在,則元件無法在 Windows 上啟動的問題。
-
將 EMQX 更新為 4.4.14 版本。
-
1.2.0
添加對證書鏈的支持。
1.1.0
- 新功能
-
-
添加對 EMQX 配置的支持,包括代理程序選項和插件。
-
- 錯誤修復和改進
-
-
將 EMQX 更新到 4.4.9 版本。
-
1.0.1
修正 TLS 握手期間導致某些 MQTT 用戶端無法連線的問題。
1.0.0
初始版本。