AWS IoTで受けたデータを、DynamoDBへ記録する手順をメモします
コンソールからDynamoDBをクリックします。
「テーブルの生成」をクリックします。
DynamoDBテーブル生成を行います。以下はサンプル入力です。
テーブル名:Save_IoT_Data
プライマリキー/パーティションキー:Client_id 文字列
プライマリキー/ソートキーの追加:timestamp 数値
作成を押します。
Save_IoT_Dataというテーブルが生成されました。
生成されたように見えますが、IoTのActionから実際に使えるのは30分ほど経った後のようです。
MQTT を受け取ると、DynamoDBへデータを投げるように設定します。コンソールからIoT Coreをクリックします。
左のAWS IoTのメニューからACTをクリックします。
ルールの生成をクリックします。
ルールの生成を行います。
名前 GetIoTData(仮)
説明 Get IoT Data and save to DynamoDB(仮)
引き続きルールの生成を行います。
属性 * <- データ全部を意味しています。
トピックスフィルター IoTData/Value<- MQTTのトピックスを設定します。。
条件 <- 取り合えず設定無し。(無条件)
アクションの追加をクリックします。
アクションを選択します。「DynamoDBテーブルにメッセージを挿入する」にチェックを入れます。
アクションの設定をクリックします。
テーブル名は、先に設定したDynamoDBのテーブル名がプルダウンメニューで選択できます。テーブル名を選択すると、ハッシュキー、Hash keyのタイプ、レンジキー、Range Key Typeは自動的に読み込まれます。
ハッシュキー値 $(clientid()) <- MQTTのクライアントIDを設定
レンジキー値 $(timestamp()) <- MQTTのタイムスタンプを書き込む
この列にメッセージデータを書き込む MQTTのDATAを保存する列の名前です。(無くてもOK)
操作 INSERT
新しいロールの生成をクリックします。
新しいロールの生成をクリックします。
IDMロール名 DynamoDB-Role
更新をクリックします。
これで新しいアクションが完成します。左上の矢印をクリックします。
AWS IoT からテストをクリックしてMQTTクライアントを立ち上げる。トピックスへのサブスクリプションに、先ほどアクションで設定したトピックフィルターと同じトピックスを設定します。トピックスへのサブスクリプションをクリックします。
入力として、
{ "temperature":"20", "humidity":"60", "stomosphere pressure":"1013" }
と入力して、トピックスに発行をクリックします。
これで、コンソールからMQTTが投げられて、アクションが起動し、DynamoDBへ記録されたはずです。ただし、DynamoDBを設定してから30分以上経過していないと動作しないので、記録されていなくてもあわてないことが肝要DynamoDB -> テーブル -> 項目 -> 全画面表示(右上)