はじめに
ここでは、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のページで、以下のテーブル作成画面にアクセスします。
以下のように、テーブル名を定義し、プライマリキーとソートキーを記入し、テーブルを作成します。
AWS IoT
AWS IoTのページにアクセスし、ACTを選択、IoTのルールを生成します。
ここで定義したルールに基づいて、AWS IoTにMQTTでpublishされたときに
発火するイベントを決めます。
ルールクエリステートメントに下記のようなSELECT文を記載します。
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の複数列に対してデータを格納するため
以下のサービスを選択します。
データベースには、上記で作成したDynamoDBのテーブルを指定します。
アクションの設定で、新規にロールを作成します。
次に、作成したルールの動作確認を行います。
AWS IoTのテストページにアクセスします。
画面下部の"発行"にMQTTのトピックにiot/topicを入力
発行するメッセージには、事前準備で記載したjsonデータを入力。
「トピックに発行」をクリックします。
最後に、DynamoDBのページにアクセスし、今回のテーブルに値が格納されていることがわかります。
以上で、MQTTでjsonデータをpublishしたことをトリガにDynamoDBにjsonデータを格納することができました。