LoginSignup
3
5

More than 3 years have passed since last update.

[AWS IoT] MQTTでjsonデータをpublishしたことをトリガにDynamoDBにjsonデータを格納する方法

Last updated at Posted at 2019-11-09

はじめに

ここでは、AWS IoTを用いて、自宅にあるIoT機器からの情報をAWSクラウドを通じて何かシステムを構築できないかな。と思い、1つひとつAWSクラウドの勉強したときのノウハウをまとめています。備忘録としてまとめているので、誤りがありましたのでご指摘ください。

今回は、

[AWS IoT--->DynamoDB]のデータ保持方法

についてです。
実際は、IoT機器からデータをクラウドにuploadする想定です。
まずは、「クラウド上にデータが届いてから保持する」箇所を作成します。

事前準備

・今回取り扱うデータを何にするか。
・どのような形式で通信を行うか。
を決めます。
取り扱いデータは以下の5つとします。
(1)管理ID
(2)時刻
(3)デバイスバージョン
(4)デバイスID
(5)デバイス種類
通信方式は、MQTTを用いてjsonフォーマットとします。
⇒以上を踏まえて、以下のようなjson形式としました。

{
    "id" :"1",
    "time" : "20191109120010000",
    "data" :{
        "ver" : "01.01.001",
        "deviceId" : "12345",
        "kind" : "temperatureSensor"
    }
}

MQTTの概要については省略します。

AWS上で各サービスを作成する

DynamoDB

 DynamoDBのページで、以下のテーブル作成画面にアクセスします。
DynamoDB1.png
以下のように、テーブル名を定義し、プライマリキーとソートキーを記入し、テーブルを作成します。
DynamoDB2.png

AWS IoT

AWS IoTのページにアクセスし、ACTを選択、IoTのルールを生成します。
ここで定義したルールに基づいて、AWS IoTにMQTTでpublishされたときに
発火するイベントを決めます。
IoTCore1.png

ルールの作成にて、任意のルール名を決めます。
IoTCore2.png

ルールクエリステートメントに下記のようなSELECT文を記載します。
IoTCore3.png

SELECT id, time, data.ver AS version, data.deviceId AS deviceID, data.kind AS kind FROM 'iot/topic'

MQTTのトピック(iot/topic)にjsonデータがpublishされると、
このルールに基づいてイベント発火します。
jsonデータをselectして次に定義するアクション(AWSサービス)に連携されます。
(入れ子になっているjsonデータにはASを使用することで一意にパラメータを定めています。またMQTTのトピックはiot/topicと定義します)

次にアクションを定義します。 
ここではDynamoDBの複数列に対してデータを格納するため
以下のサービスを選択します。
IoTCore4.png

データベースには、上記で作成したDynamoDBのテーブルを指定します。
アクションの設定で、新規にロールを作成します。
IoTCore5.png

次に、作成したルールの動作確認を行います。
AWS IoTのテストページにアクセスします。
画面下部の"発行"にMQTTのトピックにiot/topicを入力
発行するメッセージには、事前準備で記載したjsonデータを入力。
「トピックに発行」をクリックします。
IoTCore7.png

最後に、DynamoDBのページにアクセスし、今回のテーブルに値が格納されていることがわかります。
DynamoDB3.png

以上で、MQTTでjsonデータをpublishしたことをトリガにDynamoDBにjsonデータを格納することができました。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5