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

こんにちは、Michaelです。

今回から2回にわたり、MQTTブローカーのMosquittoを使ってIoTデバイスとAWS IoTをつなぐブリッジをEC2で構築してみます。

今回は、準備編としてAWS IoTの設定とEC2の作成、Mosquittoのインストールを行います

MQTTブローカー Mosquittoとは

IoTデバイスの通信プロトコルとして広く使われるMQTTでは、メッセージのやり取りをするために、仲介するサーバーが必要になります。このサーバーのことをMQTTブローカーといい、Mosquittoは代表的なOSSのMQTTブローカーで、機能も豊富なため幅広く使用されています。

メッセージのやり取りという点でいえば、AWS IoTもブローカー機能を有するため、別途MQTTブローカーを構築しなくても、MQTTによるメッセージのやり取りは可能です。

ブリッジを使用する理由

IoTと一言で言ってもその形態は多種多様で、個々のデバイスがインターネットに接続できる場合だけでなく、接続先やセキュリティ証明書に制約があるなどAWS IoTへの接続が制限される場合もあります。このような制限されたデバイスをAWS IoTと通信させようとする場合には、AWS IoTと接続可能なゲートウェイを設置する必要があります。

Mosquittoに限らず一般的なMQTTブローカーには、MQTTメッセージの仲介をするブリッジ機能が備わっており、AWS IoT と直接やり取りのできないデバイスとAWS IoTの間に置くことで、簡単にゲートウェイを構成することができます。

今回は、デバイスがAWS IoTのMQTT仕様に対応できない場合を想定して、以下のような構成の環境を作成してみます。

クライアント証明書の取得とポリシーの設定

それでは、EC2にMosquitto をインストールしてブリッジを構成していきますが、事前にAWS IoTでクライアント証明書の取得とポリシーの設定をしておきます。

クライアント証明書の取得とポリシーの設定は「 AWS IoTを始めよう -MQTTの設定(AWS IoT編)- 」の手順に沿って行い、証明書に関しては下記のように名称を付けて保存をしておきます。

証明書 ファイル名
A certificate for this thing cert.crt
A public key public.key
A private key private.key
A root CA for AWS rootCA.pem

また、AWS IoTの「設定」からエンドポイントをメモしておきます。

EC2の作成とMosquittoのインストール

AWS IoTの設定ができたところで、EC2にMosquittoブリッジを構成していきます。

まずは、MosquittoをインストールするEC2インスタンスを作成します。インスタンスを作成は「 元オンプレエンジニアがAWSを使ってみた(EC2編) 」の手順と同じように作成しますが、EC2とAWS IoTを接続するために「AWSIoTConfigAccess」のポリシーをアタッチしたIAMロールと、MQTT接続のための下記のセキュリティグループをそれぞれ作成、設定してインスタンスを起動します。

・セキュリティグループ

ディレクション ポート プロトコル ソース
インバウンド 22 tcp マイIP
インバウンド 1883 tcp マイIP
アウトバウンド すべて すべて 0.0.0.0/0

作成したEC2にSSHでログインし、Mosquittoをインストールします。

以下のコマンドで、リポジトリの更新とブローカー、クライアントのインストールを行っていきます。

1# Mosquittoを含むリポジトリに更新23$ sudo wget http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo -O /etc/yum.repos.d/mqtt.repo45# Mosquttoブローカーとクライアントのインストール67sudo yum install mosquitto mosquitto-clients

以上で、Mosquittoのインストールは完了です。

次回は、インストールしたMosquittoの設定を行い、実際にデバイスとAWS IoTの疎通確認をしていきます。

お楽しみに!

この記事を書いた人

aws-recipe-user