あらまし
前回の記事では、AWS IoT Coreでモノの登録を行い、
Raspberry Piに、登録されたモノとしてAWS IoTに
定期的にセンサの測定値を送信するPythonプログラムを
動作させるようにしました。
今回は、AWS IoT Coreにモノから送られてくる
センサの測定値をDynamoDBに保存するよう
AWSの設定画面から設定を行っていきます。
AWS IoT アクションの追加
AWS IoTのコンソールで、「ACT」→「ルール」を開きます。
「ルール」を開いたら、「作成」を選択します。
ルールの名称と、説明を入力します。
「ルールクエリステートメント」を設定します。
前回の記事では、Pythonプログラムから投稿するMQTTトピックは
「test」としているので、この欄には
「SELECT * FROM 'test'」を入力します。
「アクションの追加」を選択します。
「アクションを選択してください」と表示されるので、その下の
「DynamoDBテーブルにメッセージを挿入する」を選択し、
「アクションの設定」を選択します。
「アクションの設定」と表示されるので、「テーブル名」欄の「新しいリソースを作成」を選択します。
新規DynamoDBテーブルの作成
DynamoDBのダッシュボードが表示されるので、「テーブルの作成」を選択します。
テーブルの各設定を入力して、「作成」を選択します。
今回は、「パーティションキー」を「node-id」という名前の文字列、
「ソートキー」を「timestamp」という名前の数値にします。
テーブルに追加するデータの指定
AWS IoTの「ルールの作成」画面に戻って、「テーブル名」に
先ほど作成したテーブルの名前を入れます。
「テーブル名」を入れると「パーティションキー」と「レンジキー」の欄が
自動で埋められます。
「パーティションキー値」に「${clientid()}」を、
「レンジキー値」に「${timestamp()}」を入力します。
最後に「ロールの作成」から、DynamoDBに書き込むロールを作成して
「アクションの追加」を選択します。
まとめ
今回は、Raspberry PiからAWS IoT Coreに送られてくるデータを
AWS DynamoDBに格納する手順を紹介しました。
DynamoDBは高速でスケーラブルなデータベースですが、
キーインデックスの設定方法を理解するのに手惑いました。
今回までの手順で、センサで測定した気温や湿度の
時系列データをクラウド上のデータベースに蓄積することが
できるようになりました。
次は、DynamoDBからデータを取り出すWeb APIを作っていこうと思います。
(今年中にできればいいのですが。)