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 -> テーブル -> 項目 -> 全画面表示(右上)

