[AWS IoT Core] MQTT v5 で新たに追加されたプロパティ値を Republish で追加してみました
1 はじめに
CX 事業本部のデリバリー部の平内(SIN)です。
re:Invent 2022 で AWS IoT Core の MQTT v5 対応が発表されたが、 これにより、新しく拡張されたプロパティによって、MQTT v3.1 では、比較的複雑になってしまう作業を、簡潔に実装することが可能になりました。
AWS IoT announces general availability for version 5 of MQTT message broker (MQTT5)
AWS IoT Code では、元々、ルールのアクションにRepublishを設定すると、簡単にメッセージブローカーに到着したメッセージを、別トピックに Publish しなおすことが可能ですが、今回、Republish 時に、MQTT v5 で拡張されたプロパティが設定可能になりました。
今回は、この動作について、確認してみました。
2 Republish
Republish のドキュメンントには、Parametersのところに新たにheadersが追加されています。
https://docs.aws.amazon.com/iot/latest/developerguide/republish-rule-action.html
そして、そこで説明されているMqttHeadersを見ると、各種プロパティは、MQTT v5 のそれ、そのものになっています。
https://docs.aws.amazon.com/iot/latest/apireference/API_MqttHeaders.html
3 試してみました
最初に SQL ステートメントでルールを追加します。
続いて、アクションにRepublishを設定し、MQTT 5 のプロパティのところで、いくつかの値を設定してみました。
あとは、普通に MQTT テストクライアントで「#」をサブスクライブし、トピックを送信すると、送信したメッセージと Republish で再送されたメッセージを確認することができます。
送信されたメッセージは、Payload の他に、特に情報はないのですが、
Republish されたメッセージは、拡張プロパティがセットされていることを確認できます。
4 最後に
今回は、AWS IoT Code のルールによる Republish で、拡張プロパティを追加する要領を確認してみました。
こちらの機能を利用すると、既に MQTT v3.1 で実装されているクライアントを変更することなく、MQTT v5 で機能強化されたサブスクライバーを実装することも可能かも知れません。
5 参考リンク
[AWS IoT Core] MQTT v5 を使用してリクエスト・レスポンス パターンを実装して見ました
[AWS IoT Core] MQTT v5 を使用してユーザープロパティを実装して見ました
[AWS IoT Core] MQTT v5 を使用してトピック・エイリアスを実装して見ました
[AWS IoT Core] MQTT v5 を使用してメッセージ及び、セッション有効期限とクリーンスタートを実装して見ました
[AWS IoT Core] MQTT v5 を使用してレスポンスコードの確認を実装して見ました
[AWS IoT Core] MQTT v5 を使用してフォーマット識別要素で判別する Payload のパースを実装して見ました
[AWS IoT Core] MQTT v5 に対応した 「MQTT テストクライアント」の動作を確認して見ました
[AWS IoT Core] MQTT v5 で追加されたユーザープロパティを ルール で取得して Lambda で使用してみました
[AWS IoT Core] AWS IoT Device SDK v2 for Python で MQTT5 のサポートが始まりました (Developer Preview)