Edited at

SORACOM Beam(MQTT → MQTTS変換サービス) で Amazon MQ に接続する

More than 1 year has passed since last update.

Amazon MQにmosquitto(MQTT)とMQTT over Websocketで接続の続編です


切なる願い

Amazon MQ は 生MQTT はサポートしてないお...

でも TLSがしゃべれない非力なデバイスからも Amazon MQ 使いたいお!!


ビームを飛ばせばいいじゃない

3G/LTE通信が1日10円~ 1回線から契約できる、モノ向け通信サービスのSORACOM (CM色強い) には SORACOM Beam というデータ転送サービスがありまして、それを使って Amazon MQ に接続出来たよって話です

このデータ転送時にプロトコル変換もやってくれるのですが、変換内容に 生のMQTT → MQTTS も入ってます

要するに MQTT Proxy そんなところです (CM色強い)


手順

SORACOM の Webコンソールで "SIMグループ" を作成したら、そのSIMグループの中にある SORACOM Beam で MQTTエントリポイント を選択します

soracom-beam1.png

あとは以下のように設定していくだけです


  • プロトコル: MQTTS

  • ホスト名: Amazon MQ のダッシュボードから得てください

  • ポート番号: 8883 (ねんのため、Amazon MQ のダッシュボードで確認してください)

  • ユーザ名: Amazon MQ のダッシュボードから得てください

  • パスワード: Amazon MQ のダッシュボードから得てください

これでOKです

オプションの IMSI付与 は、ON にすると 例えば my_topic/sensor 宛てに送ると、Amazon MQ では my_topic/sensor/491023123131 と、送信元 SIM の IMSI が付与されますので、送信元を特定することがとても簡単になるのでオヌヌメです

soracom-beam2.png


確認

確認には前回同様 mosquitto と HiveMQ の MQTT over Websocketを使ってみます

ターミナル側(mosquitto_sub)の方が SORACOM Beam を使っている様子です

soracom-beam-works-with-amazon-mq.png

注目ポイント

前回mosquitto_sub の引数に --capath /etc/ssl/certs/ を入れてTLS通信にしていましたが、生MQTTで送るのでコマンドラインも減っています

SORACOM Beam を使うとこんなにメリットが;


  • そもそもTLSが使えない、非力なデバイスでMQTTやりたい

  • 通信データサイズの削減 (TLSと生の違い)

  • デバイス上の証明書更新をしなくてよい

  • Amazon MQ 側の設定変更(インスタンス作り直しに伴う endpoint の変更や、ユーザ/パスワードの変更)が発生しても、デバイス上のプログラムコード変更をしなくてよい

もっと言ってしまうと TLS実装しなくていいんです 面倒から解放されますよ (^^

これが 0.0009円/1リクエスト (in/outでそれぞれ1リクエストが発生するので、感覚的な"1回"だと 0.0018円) で使えるのだから、お得と言わざるを得ない (CM色強い)


あとがき


  • Qiitaのデザインが変わってて驚いた

  • Amazon MQ って Simple Icon マダー?

  • CM色強いですが、費用対効果は抜群なサービスです

現場からは以上です。