MQTT 5 ブローカー (EMQX) - AWS IoT Greengrass

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

MQTT 5 ブローカー (EMQX)

EMQX MQTT ブローカーコンポーネント (aws.greengrass.clientdevices.mqtt.EMQX) は、クライアントデバイスと Greengrass コアデバイス間のMQTTメッセージを処理します。このコンポーネントは、 EMQX5.0 MQTT ブローカーの修正バージョンを提供します。このMQTTブローカーをデプロイして、クライアントデバイスとコアデバイス間の通信に MQTT 5 つの機能を使用します。MQTT ブローカーの選択方法の詳細については、「」を参照してください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 コンソールでも確認できます。コンポーネントの詳細ページで [Dependencies] (依存関係) リストを確認します。

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_modeuse_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
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
Windows
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
このコンポーネントのログを確認するには
  • コアデバイスに次のコマンドを実行して、このコンポーネントのログファイルをリアルタイムに確認します。/greengrass/v2 または を AWS IoT Greengrass ルートフォルダへのパスC:\greengrass\v2に置き換えます。

    Linux
    sudo tail -f /greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
    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 にアップグレードします。

  • コンポーネントを再起動せずにブローカーの設定を変更できるようになりました。

更新
  • emqxmergeConfigurationFilesreplaceConfigurationFiles 設定フィールドに代わる、 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

当初のバージョン