Proactive Cybernetics

AWS IoT Coreで取得したデータをDynamoDBで保存

タグ :IoTデバイス Webサーバーサイド 2020年11月24日 by Proactive-cybernetics

あらまし

前回の記事では、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を作っていこうと思います。
(今年中にできればいいのですが。)

↑先頭に戻る