翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MQTT ブリッジコンポーネント (aws.greengrass.clientdevices.mqtt.Bridge
) は、クライアントデバイス、ローカル Greengrass パブリッシュ/サブスクライブ、および 間で MQTT メッセージをリレーします AWS IoT Core。このコンポーネントを使用し、カスタムコンポーネントのクライアントデバイスからの MQTT メッセージを処理して、クライアントデバイスを AWS クラウドで同期できます。
注記
クライアントデバイスは、Greengrass コアデバイスに接続し、処理するために MQTT メッセージとデータを送信するローカル IoT デバイスです。詳細については、「ローカル IoT デバイスとやり取りする」を参照してください。
このコンポーネントを使用して、次のメッセージブローカー間でメッセージをリレーできます:
-
ローカル MQTT - ローカル MQTT ブローカーは、クライアントデバイスとコアデバイスの間のメッセージを処理します。
-
ローカルパブリッシュ/サブスクライブ - ローカル Greengrass メッセージブローカーは、コアデバイスのコンポーネント間のメッセージを処理します。Greengrass コンポーネントでこれらのメッセージとやり取りする方法の詳細については、「ローカルメッセージをパブリッシュ/サブスクライブする」を参照してください。
-
AWS IoT Core – AWS IoT Core MQTT ブローカーは、IoT デバイスと AWS クラウド 送信先間のメッセージを処理します。Greengrass コンポーネントでこれらのメッセージとやり取りする方法の詳細については、「AWS IoT Core MQTT メッセージの発行/サブスクライブ」を参照してください。
注記
MQTT ブリッジは、クライアントデバイスが QoS 0 を使用してローカル MQTT ブローカーを公開およびサブスクライブする場合でも AWS IoT Core、QoS 1 を使用してパブリッシュおよびサブスクライブします。その結果、ローカル MQTT ブローカーのクライアントデバイスから に MQTT メッセージを中継すると、レイテンシーが増加する可能性があります AWS IoT Core。コアデバイスにおける MQTT 設定の詳細については、「MQTT タイムアウトとキャッシュ設定を設定する」を参照してください。
バージョン
このコンポーネントには、次のバージョンがあります。
-
2.3.x
-
2.2.x
-
2.1.x
-
2.0.x
タイプ
このコンポーネントはプラグインコンポーネント (aws.greengrass.plugin
) です。Greengrass nucleus は、nucleus と同じ Java バーチャルマシン (JVM) でこのコンポーネントを実行します。コアデバイスでこのコンポーネントのバージョンを変更するとき、nucleus が再起動します。
このコンポーネントは、Greengrass nucleus と同じログファイルを使用します。詳細については、「AWS IoT Greengrass ログのモニタリング」を参照してください。
詳細については、「コンポーネントタイプ」を参照してください。
オペレーティングシステム
このコンポーネントは、次のオペレーティングシステムを実行するコアデバイスにインストールできます。
リナックス
Windows
要件
このコンポーネントには次の要件があります。
-
デフォルトポートの 8883 以外のポートを使用するようにコアデバイスの MQTT ブローカーコンポーネントを設定する場合、MQTT ブリッジ v2.1.0 以降を使用する必要があります。ブローカーが動作するポートに接続するように設定します。
-
MQTT ブリッジコンポーネントは、VPC で実行できるようにサポートされています。
依存関係
コンポーネントをデプロイすると、 はその依存関係の互換性のあるバージョン AWS IoT Greengrass もデプロイします。つまり、コンポーネントを正常にデプロイするには、コンポーネントとその依存関係のすべての要件を満たす必要があります。このセクションでは、このコンポーネントのリリースされたバージョンの依存関係と、各依存関係に対するコンポーネントのバージョンを定義するセマンティックバージョン制約をリスト表示しています。コンポーネントの各バージョンの依存関係は、AWS IoT Greengrass コンソール
次の表に、このコンポーネントのバージョン 2.3.2 の依存関係を示します。
依存関係 | 互換性のあるバージョン | 依存関係タイプ |
---|---|---|
クライアントデバイス認証 | >=2.2.0 <2.6.0 | ハード |
コンポーネントの依存関係の詳細については、「コンポーネント recipe のリファレンス」を参照してください。
設定
このコンポーネントには、コンポーネントのデプロイ時にカスタマイズできる次の設定パラメータが用意されています。
mqttTopicMapping
-
ブリッジするトピックのマッピング。このコンポーネントは、ソーストピックのメッセージへサブスクライブし、受信したメッセージを宛先トピックにパブリッシュします。各トピックマッピングは、トピック、ソースタイプ、宛先タイプを定義します。
このオブジェクトには、次の情報が含まれます。
topicMappingNameKey
-
このトピックマッピングの名前。
topicMappingNameKey
をこのトピックマッピングを識別しやすくする名前に置き換えます。このオブジェクトには、次の情報が含まれます。
topic
-
ソースブローカーとターゲットブローカーの間をつなぐトピックまたはトピックフィルター。
+
および#
の MQTT トピックワイルドカードを使用すると、トピックフィルターに一致するすべてのトピックでメッセージをリレーできます。詳細については、「AWS IoT Core デベロッパーガイド」の「MQTT トピック」を参照してください。注記
Pubsub
ソースブローカーとともに MQTT トピックのワイルドカードを使用するには、Greengrass nucleus コンポーネントの v2.6.0 以降を使用する必要があります。 targetTopicPrefix
-
このコンポーネントがメッセージをリレーするときにターゲットトピックに追加するプレフィックス。
source
-
ソースメッセージブローカー。次のオプションから選択します。
-
LocalMqtt
- クライアントデバイスが通信するローカル MQTT ブローカー。 -
Pubsub
- ローカル Greengrass パブリッシュ/サブスクライブメッセージブローカー。 -
IotCore
– AWS IoT Core MQTT メッセージブローカー。注記
MQTT ブリッジは、クライアントデバイスが QoS 0 を使用してローカル MQTT ブローカーを公開およびサブスクライブする場合でも AWS IoT Core、QoS 1 を使用してパブリッシュおよびサブスクライブします。その結果、ローカル MQTT ブローカーのクライアントデバイスから に MQTT メッセージを中継すると、レイテンシーが増加する可能性があります AWS IoT Core。コアデバイスにおける MQTT 設定の詳細については、「MQTT タイムアウトとキャッシュ設定を設定する」を参照してください。
source
とtarget
は異なる必要があります。 -
target
-
ターゲット メッセージ ブローカー。次のオプションから選択します。
-
LocalMqtt
- クライアントデバイスが通信するローカル MQTT ブローカー。 -
Pubsub
- ローカル Greengrass パブリッシュ/サブスクライブメッセージブローカー。 -
IotCore
– AWS IoT Core MQTT メッセージブローカー。注記
MQTT ブリッジは、クライアントデバイスが QoS 0 を使用してローカル MQTT ブローカーを公開およびサブスクライブする場合でも AWS IoT Core、QoS 1 を使用してパブリッシュおよびサブスクライブします。その結果、ローカル MQTT ブローカーのクライアントデバイスから に MQTT メッセージを中継すると、レイテンシーが増加する可能性があります AWS IoT Core。コアデバイスにおける MQTT 設定の詳細については、「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 プロトコルのバージョン。nucleus 設定で選択した MQTT バージョンと同じである必要があります。
次から選択します。
-
mqtt3
-
mqtt5
mqttTopicMapping
オブジェクトのsource
またはtarget
フィールドがLocalMqtt
に設定されている場合は、MQTT ブローカーをデプロイする必要があります。mqtt5
オプションを選択した場合は、MQTT 5 ブローカー (EMQX) を使用する必要があります。デフォルト:
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
-
(オプション) ローカル MQTT ブローカーの URI。デフォルトポート 8883 とは異なるポートを使用するように MQTT ブローカーを設定する場合、このパラメータを指定する必要があります。以下の形式を利用して、
ポート
を MQTT ブローカーが動作するポートに置き換えます:ssl://localhost:
。port
デフォルト:
ssl://localhost:8883
- startupTimeoutSeconds
-
(オプション) コンポーネントが起動する最大時間 (秒)。このタイムアウトを超えている場合、コンポーネントの状態が
BROKEN
に変わります。デフォルト:
120
例: 設定マージの更新
次の設定更新の例では、次の項目を指定します。
-
clients/+/hello/world
トピックフィルターに一致するトピック AWS IoT Core について、クライアントデバイスから にメッセージを中継します。 -
clients/+/detections
トピックフィルターに一致するトピックで、メッセージをクライアントデバイスからローカルのパブリッシュ/サブスクライブにリレーし、ターゲットトピックにevents/input/
のプレフィックスを追加します。結果のターゲットトピックは、events/input/clients/+/detections
トピックフィルターに一致します。 -
clients/+/status
トピックフィルターに一致するトピック AWS IoT Core でクライアントデバイスから にメッセージをリレーし、ターゲットトピックに$aws/rules/StatusUpdateRule/
プレフィックスを追加します。この例では、これらのメッセージを直接StatusUpdateRule
という名前の AWS IoT ルール にリレーして、Basic Ingest を使用したコスト削減を行います。
{
"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"
}
}
}
例: MQTT 5 の設定
次の設定の例では、次の項目を更新します。
-
ブリッジがローカルブローカーで MQTT 5 プロトコルを使用できるようにします。
-
ClientDeviceHelloWorld
トピックマッピングのパブリッシュされた設定として MQTT 保持を設定します。
{ "mqttTopicMapping": { "ClientDeviceHelloWorld": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" } }, "mqtt5RouteOptions": { "ClientDeviceHelloWorld": { "retainAsPublished": true } }, "mqtt": { "version": "mqtt5" } }
ローカルログファイル
このコンポーネントは、Greengrass nucleus コンポーネントと同じログファイルを使用します。
/logs/greengrass.log
/greengrass/v2
このコンポーネントのログを確認するには
-
コアデバイスに次のコマンドを実行して、このコンポーネントのログファイルをリアルタイムに確認します。
または/greengrass/v2
C:\greengrass\v2
を AWS IoT Greengrass ルートフォルダへのパスに置き換えます。sudo tail -f
/logs/greengrass.log/greengrass/v2
変更ログ
次の表は、コンポーネントの各バージョンにおける変更を示します。
バージョン |
変更 |
---|---|
2.3.2 |
クライアントデバイス認証バージョン 2.5.0 リリース用に、バージョンが更新されました。 |
2.3.1 |
|
2.3.0 |
|
2.2.6 |
|
2.2.5 |
クライアントデバイス認証バージョン 2.4.0 リリース用に、バージョンが更新されました。 |
2.2.4 |
Greengrass クライアントデバイス認証バージョン 2.3.0 リリース用に、バージョンが更新されました。 |
2.2.3 |
このバージョンには、バグ修正と機能向上が含まれています。 |
2.2.2 |
|
2.2.1 |
|
2.2.0 |
|
2.1.1 |
|
2.1.0 |
|
2.0.1 |
このバージョンには、バグ修正と改善が含まれています。 |
2.0.0 |
当初のバージョン |