翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MQTT 5 ブローカー (EMQX)
EMQX MQTT ブローカーコンポーネント (aws.greengrass.clientdevices.mqtt.EMQX
) は、クライアントデバイスと Greengrass コアデバイス間のMQTTメッセージを処理します。このコンポーネントは、 EMQX5.0 MQTT ブローカー
このブローカーは 5.0 MQTT プロトコルを実装します。これには、セッションとメッセージの有効期限、ユーザープロパティ、共有サブスクリプション、トピックエイリアスなどのサポートが含まれます。 5 MQTT は 3MQTT.1.1 と下位互換性があるため、Moquette 3MQTT.1.1 ブローカーを実行すると、それを 5 EMQX MQTT ブローカーに置き換えることができ、クライアントデバイスは引き続き通常どおり接続して動作できます。
注記
クライアントデバイスは、Greengrass コアデバイスに接続してMQTTメッセージとデータを処理に送信するローカル IoT デバイスです。詳細については、「ローカル IoT デバイスとやり取りする」を参照してください。
バージョン
このコンポーネントには、次のバージョンがあります。
-
2.0.x
-
1.2.x
-
1.1.x
-
1.0.x
Type
このコンポーネントはジェネリックコンポーネント (aws.greengrass.generic
) です。Greengrass nucleus は、コンポーネントのライフサイクルスクリプトを実行します。
詳細については、「コンポーネントタイプ」を参照してください。
オペレーティングシステム
このコンポーネントは、次のオペレーティングシステムを実行するコアデバイスにインストールできます。
Linux
Windows
要件
このコンポーネントには次の要件があります。
-
コアデバイスは、MQTTブローカーが動作するポートで接続を受け入れることができる必要があります。このコンポーネントは、デフォルトでポート 8883 でMQTTブローカーを実行します。このコンポーネントを設定するとき、別のポートを指定できます。
別のポートを指定し、MQTTブリッジコンポーネントを使用してMQTTメッセージを他のブローカーに中継する場合は、ブリッジ v2.1.0 MQTT 以降を使用する必要があります。MQTT ブローカーが動作するポートを使用するように設定します。
別のポートを指定し、IP ディテクターコンポーネントを使用してMQTTブローカーエンドポイントを管理する場合は、IP ディテクター v2.1.0 以降を使用する必要があります。MQTT ブローカーが動作するポートを報告するように設定します。
-
Linux コアデバイスでは、次のように Docker がコアデバイスにインストールおよび設定されています。
-
Docker Engine
1.9.1 以降が Greengrass コアにインストールされていいること。バージョン 20.10 は、 AWS IoT Greengrass Core ソフトウェアで動作することが検証された最新バージョンです。Docker コンテナを実行するコンポーネントをデプロイする前に、コアデバイスに直接、Docker をインストールしておく必要があります。 -
このコンポーネントをデプロイする前に、Docker デーモンがコアデバイス上で起動し、実行されています。
-
このコンポーネントを実行するシステムユーザーには、ルート権限または管理者権限が必要です。または、このコンポーネントを
docker
グループのシステムユーザーとして実行し、このコンポーネントのrequiresPrivileges
オプションを に設定false
して、権限なしでEQMXMQTTブローカーを実行することもできます。
-
-
EMQX MQTT ブローカーコンポーネントは、 での実行がサポートされていますVPC。
-
EMQX MQTT ブローカーコンポーネントは、
armv7
プラットフォームではサポートされていません。
依存関係
コンポーネントをデプロイすると、 はその依存関係の互換性のあるバージョン AWS IoT Greengrass もデプロイします。つまり、コンポーネントを正常にデプロイするには、コンポーネントとその依存関係のすべての要件を満たす必要があります。このセクションでは、このコンポーネントのリリースされたバージョンの依存関係と、各依存関係に対するコンポーネントのバージョンを定義するセマンティックバージョン制約をリスト表示しています。コンポーネントの各バージョンの依存関係は、AWS IoT Greengrass コンソール
- 2.0.2
-
次の表に、このコンポーネントのバージョン 2.0.2 の依存関係を示します。
依存関係 互換性のあるバージョン 依存関係タイプ クライアントデバイス認証 >=2.2.0 <2.6.0 ソフト - 2.0.1
-
次の表に、このコンポーネントのバージョン 2.0.1 の依存関係を示します。
依存関係 互換性のあるバージョン 依存関係タイプ クライアントデバイス認証 >=2.2.0 <2.6.0 ハード - 2.0.0
-
次の表に、このコンポーネントのバージョン 2.0.0 の依存関係を示します。
依存関係 互換性のあるバージョン 依存関係タイプ クライアントデバイス認証 >=2.2.0 <2.5.0 ハード - 1.2.2 – 1.2.3
-
次の表に、このコンポーネントのバージョン 1.2.2 から 1.2.3 までの依存関係を示します。
依存関係 互換性のあるバージョン 依存関係タイプ クライアントデバイス認証 >=2.2.0 <2.5.0 ハード - 1.2.0 and 1.2.1
-
次の表に、このコンポーネントのバージョン 1.2.0 および 1.2.1 の依存関係を示します。
依存関係 互換性のあるバージョン 依存関係タイプ クライアントデバイス認証 >=2.2.0 <2.4.0 ハード - 1.0.0 and 1.1.0
-
次の表に、このコンポーネントのバージョン 1.0.0 および 1.1.0 の依存関係を示します。
依存関係 互換性のあるバージョン 依存関係タイプ クライアントデバイス認証 >=2.2.0 <2.3.0 ハード
コンポーネントの依存関係の詳細については、「コンポーネント recipe のリファレンス」を参照してください。
設定
- 2.0.0 - 2.0.1
-
このコンポーネントには、コンポーネントのデプロイ時にカスタマイズできる次の設定パラメータが用意されています。
重要
5 ブローカー (EMQX) コンポーネントのバージョン 2 MQTT を使用する場合は、設定ファイルを更新する必要があります。バージョン 1 の設定ファイルはバージョン 2 では機能しません。
- emqxConfig
-
(オプション) 使用するEMQXMQTTブローカー
設定。このコンポーネントでEMQX設定オプションを設定できます。 EMQX ブローカーを使用する場合、Greengrass はデフォルト設定を使用します。このフィールドを使用して変更しない限り、この設定が使用されます。
次の設定を変更すると、EMQXブローカーコンポーネントが再起動します。他の設定変更は、コンポーネントを再起動せずに適用されます。
-
emqxConfig/cluster
-
emqxConfig/node
-
emqxConfig/rpc
注記
aws.greengrass.clientdevices.mqtt.EMQX
は、セキュリティに配慮したオプションを設定することを許可します。これには、TLS設定、認証、認可プロバイダーが含まれます。相互TLS認証と Greengrass クライアントデバイス認証プロバイダーを使用するデフォルト設定をお勧めします。例: デフォルト設定
次の例は、5 (EMQX) MQTT ブローカーに設定されたデフォルトを示しています。これらの設定は、
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" } } -
- authMode
-
(オプション) ブローカーの認可プロバイダーを設定します。次のいずれかの値を指定できます。
-
enabled
– (デフォルト) Greengrass 認証および認可プロバイダーを使用します。 -
bypass_on_failure
– Greengrass 認証プロバイダーを使用し、Greengrass が認証または認可を拒否する場合は、EMQXプロバイダーチェーン内の残りの認証プロバイダーを使用します。 -
bypass
– Greengrass プロバイダーが無効になっています。認証と認可はEMQXプロバイダーチェーンによって処理されます。
-
requiresPrivilege
-
(オプション) Linux コアデバイスでは、 を指定して、ルート権限または管理者権限なしでEMQXMQTTブローカーを実行できます。このオプションを
false
に設定した場合、このコンポーネントを実行するシステムユーザーは、docker
グループのメンバーである必要があります。デフォルト:
true
startupTimeoutSeconds
-
(オプション) EMQXMQTTブローカーが開始する最大秒数。このタイムアウトを超えている場合、コンポーネントの状態が
BROKEN
に変わります。デフォルト:
90
ipcTimeoutSeconds
-
(オプション) Greengrass nucleus がプロセス間通信 (IPC) リクエストに応答するまでコンポーネントが待機する最大秒数。このコンポーネントがクライアントデバイスが認証されているかどうかを確認するときにタイムアウトエラーを報告する場合は、この数値を増やします。
デフォルト:
5
crtLogLevel
-
(オプション) AWS 共通ランタイム (CRT) ライブラリのログレベル。
デフォルトはEMQXMQTTブローカーログレベル (
log.level
の ) ですemqx
。 restartIdentifier
-
(オプション) EMQXMQTTブローカーを再起動するには、このオプションを設定します。この設定値が変更されると、このコンポーネントはMQTTブローカーを再起動します。このオプションを使用して、クライアントデバイスを強制的に切断できます。
dockerOptions
-
(オプション) Docker コマンドラインにパラメータを追加するには、Linux オペレーティングシステムでのみこのオプションを設定します。例えば、追加のポートをマッピングするには、
-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
-
(オプション) 使用するEMQXMQTTブローカー
設定。このコンポーネントでは、EMQX設定オプションのサブセットを設定できます。 このオブジェクトには、次の情報が含まれます。
listener.ssl.external
-
(オプション) MQTTブローカーが動作するポート。
注記
別のポートを指定し、MQTTブリッジコンポーネントを使用してMQTTメッセージを他のブローカーに中継する場合は、ブリッジ v2.1.0 MQTT 以降を使用する必要があります。MQTT ブローカーが動作するポートを使用するように設定します。
別のポートを指定し、IP ディテクターコンポーネントを使用してMQTTブローカーエンドポイントを管理する場合は、IP ディテクター v2.1.0 以降を使用する必要があります。MQTT ブローカーが動作するポートを報告するように設定します。
デフォルト:
8883
listener.ssl.external.max_connections
-
(オプション) MQTTブローカーがサポートする同時接続の最大数。
デフォルト:
1024000
listener.ssl.external.max_conn_rate
-
(オプション) MQTTブローカーが受信できる 1 秒あたりの新しい接続の最大数。
デフォルト:
500
listener.ssl.external.rate_limit
-
(オプション) MQTTブローカーへのすべての接続の帯域幅制限。帯域幅とその帯域幅の期間をカンマ (
,
) で区切ってbandwidth,duration
の形式で指定します。例えば、MQTTブローカーを 5 秒ごとに 50 キロバイト (KB) のデータに制限50KB,5s
するように を指定できます。 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 コアデバイスでは、 を指定して、ルート権限または管理者権限なしでEMQXMQTTブローカーを実行できます。このオプションを
false
に設定した場合、このコンポーネントを実行するシステムユーザーは、docker
グループのメンバーである必要があります。デフォルト:
true
startupTimeoutSeconds
-
(オプション) EMQXMQTTブローカーが開始する最大秒数。このタイムアウトを超えている場合、コンポーネントの状態が
BROKEN
に変わります。デフォルト:
90
ipcTimeoutSeconds
-
(オプション) Greengrass nucleus がプロセス間通信 (IPC) リクエストに応答するまでコンポーネントが待機する最大秒数。このコンポーネントがクライアントデバイスが認証されているかどうかを確認するときにタイムアウトエラーを報告する場合は、この数値を増やします。
デフォルト:
5
crtLogLevel
-
(オプション) AWS 共通ランタイム (CRT) ライブラリのログレベル。
デフォルトはEMQXMQTTブローカーログレベル (
log.level
の ) ですemqx
。 restartIdentifier
-
(オプション) EMQXMQTTブローカーを再起動するには、このオプションを設定します。この設定値が変更されると、このコンポーネントはMQTTブローカーを再起動します。このオプションを使用して、クライアントデバイスを強制的に切断できます。
dockerOptions
-
(オプション) Docker コマンドラインにパラメータを追加するには、Linux オペレーティングシステムでのみこのオプションを設定します。例えば、追加のポートをマッピングするには、
-p
Docker パラメータを使用します。"-p 1883:1883"
mergeConfigurationFiles
-
(オプション) このオプションを設定して、指定したEMQX設定ファイルのデフォルトを追加または上書きします。設定ファイルとその形式の詳細については、「 EMQX4.0 ドキュメント」の「設定
」を参照してください。指定した値は、設定ファイルに付加されます。 次の例では、
etc/emqx.conf
ファイルを更新します。"mergeConfigurationFiles": { "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s" },
Greengrass は、 でサポートされている設定ファイルに加えてEMQX、 EMQXと呼ばれる の Greengrass 認証プラグインを設定するファイルをサポートしています
etc/plugins/aws_greengrass_emqx_auth.conf
。サポートされているオプションはauth_mode
とuse_greengrass_managed_certificates
の 2 つです。別の認証プロバイダーを使用するには、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 Client Device Auth プロバイダーを使用するデフォルト設定です。 -
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 VISUAL STUDIO COMMUNITY 2022
このコンポーネントは、Greengrass Core ソフトウェアライセンス契約
変更ログ
次の表は、コンポーネントの各バージョンにおける変更を示します。
- v2.x
-
バージョン
変更
2.0.2
- バグ修正と機能向上
-
-
クライアントデバイス認証コンポーネントの準備が整う前に がEMQX起動する問題を修正しました。
-
2.0.1
クライアントデバイス認証バージョン 2.5.0 リリース用に、バージョンが更新されました。
2.0.0
このバージョンの 5 MQTT ブローカー (EMQX) では、バージョン 1.x とは異なる設定パラメータが必要です。バージョン 1.x でデフォルト以外の設定を使用している場合は、2.x のコンポーネント設定を更新する必要があります。詳細については、「設定」を参照してください。
- 新機能
-
-
MQTT ブローカーを EMQX 5.1.1 にアップグレードします。
-
コンポーネントを再起動せずにブローカーの設定を変更できるようになりました。
-
- 更新
-
-
emqx
、mergeConfigurationFiles
、replaceConfigurationFiles
設定フィールドに代わる、emqxConfig
設定フィールドが新たに加わりました。
-
- v1.x
-
バージョン
変更
1.2.3
- バグ修正と機能向上
-
-
クライアントの切断と再認証によって以前に認証EMQXした後、クライアントが とやり取りできなかった問題を修正しました。
-
1.2.2
クライアントデバイス認証バージョン 2.4.0 リリース用に、バージョンが更新されました。
1.2.1
- バグ修正と機能向上
-
-
Visual C++ 再配布可能パッケージがまだ存在しない場合に Windows 上でコンポーネントが起動しない問題を修正します。
-
バージョン 4.4.14 EMQXの更新。
-
1.2.0
証明書チェーンのサポートを追加しました。
1.1.0
- 新機能
-
-
ブローカーオプションやプラグインなどのEMQX設定のサポートを追加しました。
-
- バグ修正と機能向上
-
-
バージョン 4.4.9 EMQXの更新。
-
1.0.1
TLS ハンドシェイク中に一部のMQTTクライアントが接続に失敗する問題を修正しました。
1.0.0
当初のバージョン