AWS IoTにてPublish, Subscribeするテスト方法についてはAWS IoTを参照して下さい。 ここでは実際にデバイスを登録してIoT側にてSubscribeした内容をRepublishするまでを行ってみます。 最終的にはSubscribeした内容に応じてPublishしたり、その内容をRDBに保存するまでを検討します。 AWS IoTの設定 †モノの登録 †IoT Coreを選択し、管理メニューからモノを選択し、単一のモノを作成します。
ポリシーの作成 †安全性メニューからポリシーを選択し、ポリシーを作成します。 安全性メニューから証明書を選択し、作成した証明書を選択します。 ルールの作成 †ACTメニューからルールを作成します。 clientid() AS client_id, timestamp() AS timestamp, * 生成されるルールクエリステートメントは以下になります。 SELECT clientid() AS client_id, timestamp() AS timestamp, * FROM 'test/pub' 条件は指定せずにアクションを追加します。 「AWS IoT のトピックにメッセージを再パブリッシュする」を選択し、アクションを設定します。 アクションは複数登録が可能です。 IAMロールへのポリシーのアタッチ †AWSのトップからIAM(Identity and Access Management)を選択します。 MQTT.fxの設定 †接続設定 †MQTT.fxをインストールし、青い歯車をクリックし、接続設定を行います。 Broker Addressにはエンドポイント、Broker Portは8883になります。 同一画面でSSL/TLSを選択し、証明書の設定を行います。 Enable SSL/TLSにチェック ProtocolはTLSv1.2を選択 Self signed certificatesをチェック
OKでConnectにて接続します。 Logタブにて接続していることを確認します。 動作確認 †Subscribe †MQTT.fxのSubscribeメニューにてトピックに test/sub を入力し、Subscribeボタンを押下し、待ち受け状態にします。 Publish †MQTT.fxのPublishメニューにてトピックに test/pub を入力し、メッセージに以下を入力してAWS IoTに向けてPublishします。 {"temp":25} Publishで特に画面上では変化は起きませんが、再びSubscribeメニューを開くとclient_idとtimestampが付加され、以下のメッセージがAWS IoTからPublishされていることが確認できます。 {"client_id":"AWS_IoT","timestamp":1529478275214,"temp":25} 考察 †Subscribeした内容に応じてPublishする内容を変えたい場合は、「メッセージデータを渡す Lambda 関数を呼び出す」アクションを追加し、Lambdaにてメッセージを解析してAWS IoTへPublishすることになりそうです。 Subscribeしたメッセージをデータベースへ保存する場合は、KinesisやS3バケットを経由してRDBに保存したり、DynamoDBへ挿入することになりそうです。 |