【AWS IoTルールの基本 その2】MQTTの別トピックにRepublish

こんにちは、Michaelです。
今回は、「AWS IoTルールの基本」の第2回として、MQTTの別トピックにRepublishするルール設定を紹介します。

今回の構成

AWS IoTのトピック「test/pub」にPublishされたメッセージを、トピック「test/sub」に再度Publishさせます。
デバイスからはセンサーデータのみが送信される想定で、機器のClientIdと受信時刻をAWS IoTで付加して「test/sub」にRepublishします。

メッセージソースの設定

メッセージソースには以下のAWS IoT SQLクエリを設定します。
組み込み関数のclientid()でデバイスのClientId、timestamp()でAWS IoT で受信した時刻を取得し、それぞれ「client_id」、「timestamp」として付加します。

ルールアクションの設定

アクションとして「AWS IoT のトピックにメッセージを再パブリッシュする」を選択します。


設定内容はRepublishする先のトピックのみで、「test/sub」にpublishするように設定をします。

実行結果

MQTT.fxを送信・受信デバイスとしてテストを実行してみます。
ClientIdには「device001」を設定し、Republish先の「test/sub」をSubscribeした状態にしておきます。


Publish先トピックに「test/pub」を設定し、以下のようなセンサーデータのJSONをメッセージとしてPublishをします。

Subscribeしているトピックを確認すると、送信メッセージにメッセージソースで設定した「client_id」、「timestamp」が付加されたメッセージが確認できました。

まとめ

AWS IoTルールでは、AWS IoT SQLで条件設定や出力メッセージの設定ができるため、MQTTの別トピックにRepublishする設定を使うことで、簡単な条件処理であればAWS IoTのみで完結させることができます。
例えば、センサーデータが閾値を超えた場合に機器設定変更のデータを返送用トピックにRepublishするといった形で利用することができます。
次回は、AWS IoTメッセージをS3に保存する設定を紹介します。
お楽しみに!

この記事を書いた人

aws-recipe-user