AWS
SORACOM
AmazonMQ
SORACOMBeam

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色強いですが、費用対効果は抜群なサービスです

現場からは以上です。