AWS IoTとデバイスの通信をEC2のMQTTブローカーでブリッジさせてみる 設定編

Pocket

こんにちは、Michaelです。
前回、「AWS IoTとデバイスの通信をEC2のMQTTブローカーでブリッジさせてみる 準備編」として、EC2に対してMQTTブローカー「Mosquitto」のインストールを行いました。
今回は、インストールしたMosquittoの設定を行って、IoTデバイスとAWS IoTとのブリッジを試します。

MQTTブローカーの設定

それでは、Mosquittoを設定していきます。
まず、AWS IoTからダウンロードしたクライアント証明書のうち、cert.crt、private.key、rootCA.pemを”/etc/mosquitto/certs”のディレクトリにアップロードしておきます。
cert.crt、private.keyは以下のようにパーミッションを変更しておきます。

証明書を配置したら、Mosquitto用の設定ファイルを作成します。
Vimエディタ等で下記のテキストをコピー/貼り付けし、保存しておきます。
設定ファイルの「AWS IoT endpoint」にはAWS IoTで取得したエンドポイントを書き込みます。
また、「Setting topics」には接続するトピックと通信方向、QoSを設定します。通信方向は設定はローカルネットワーク側を中心として、ゲートウェイに入る

・bridge.conf

設定ファイルができたので、Mosquittoブリッジを起動します。
オプション-cで先ほど作成した設定ファイルを指定して起動します。オプション-dを付けることでバックグラウンド起動ができますが、今回はログ確認のためオプションを付けずに起動します。


疎通テスト
実際にクライアントとAWS IoTの間でMosquittoブリッジを介してメッセージを送れるか試してみます。
クライアントにはMQTT.fxを使用し、以下のように設定してMosquittoブリッジに接続します。

項目 内容
Broker Address EC2インスタンスのパブリックIP
Broker Port 1883
Client ID (任意の文字列)
Enable SSL/TLS チェックなし


プロファイルを選択してConnectをクリックするとMosquittoのログに接続元IPと設定したClient IDが表示されました。


AWS IoTのテストコンソールで「awsiot_to_gw」のトピックへサブスクライブした状態でMQTT.fxからパブリッシュをしてみると、以下のようなログと同時にテストコンソールでメッセージが表示されました。


逆に、MQTT.fxで「gw_to_awsiot」のトピックへサブスクライブした状態で、AWS IoTのテストコンソールからパブリッシュをすると、MQTT.fxでメッセージを受け取ることができました。

まとめ

今回は、Mosquitto MQTTブローカーを使ってAWS IoTとクライアントデバイスをブリッジさせる検証を行いましたが、簡単な設定でAWS IoTとクライアントを疎通させることができました。この仕組みを使うことでAWS IoTに対応できないデバイスでもAWS IoTにメッセージを送ることができるため、使用できるデバイスの幅が広がるのではないでしょうか。
今回は以上となります。次回もお楽しみに!