IoT Core - DynamoDBv2チュートリアル
この記事では、AWS IoT Coreを使用してデバイスデータをDynamoDBv2テーブルに保存する方法について解説します。
具体的な手順を、DynamoDBとDynamoDBv2の違いを踏まえながら説明します。
目次
- DynamoDBとDynamoDBv2の違い
- ステップ 1: DynamoDB テーブル作成
- ステップ 2: DynamoDB テーブルにデータを送信する AWS IoT ルールを作成
- ステップ 3: AWS IoT ルールと DynamoDB テーブルをテスト
DynamoDBとDynamoDBv2の違い
AWSのDynamoDBとDynamoDBv2では、データの格納形式に重要な違いがあります。
これらの違いを理解することは、データモデルの設計とクエリの最適化において重要です。
DynamoDB
DynamoDBでは、データは主にJSON形式の文字列として格納されます。
これは、複数のデータポイントを一つのカラムに組み込むことが可能で、柔軟なデータモデルを提供します。
例えば、以下のような形式でデータが保存されます。
sample_time | device_id | received_data |
---|---|---|
1 | 1 | {"barometer": 1013, ...} |
ここでは、received_data
カラムにJSON形式の文字列が格納され、複数のデータフィールドが一つのエントリーに含まれています。
DynamoDBv2
一方で、DynamoDBv2では、各データポイントが個別のカラムに格納されます。
これにより、データのクエリや分析がより簡単になり、特定のデータポイントに対するアクセスが高速化します。
例として、以下のようなデータ構造があります。
sample_time | device_id | barometer | humidity | temperature | wind_bearing | wind_velocity |
---|---|---|---|---|---|---|
1 | 1 | 1013 | 80 | 28 | 255 | 22 |
この形式では、barometer
、humidity
、temperature
など、各データポイントが独立したカラムとして格納されています。
これにより、特定のデータフィールドに対して直接クエリを実行することが可能になります。
ステップ 1: DynamoDB テーブル作成
以下は、DynamoDB コンソールでテーブルを作成する手順を見やすくまとめたものです。
DynamoDB テーブル作成手順
1.DynamoDB コンソールを開く
- AWS管理コンソールにログインし、DynamoDBサービスを選択します
2.テーブルの作成
- DynamoDBのダッシュボードで、[Create table] (テーブルの作成) をクリックします
3.テーブル名の設定
- [Table name] (テーブル名) のフィールドに
wx_data
と入力します
4.キーの設定
- [Partition key] (パーティションキー) に
sample_time
を入力します - [Sort key] (ソートキー) に
device_id
を入力します - 両キーともにデータタイプは
Number
を選択します
5.テーブルの作成
- 全ての設定が完了したら、[Create] (作成) ボタンをクリックしてテーブルを作成します
ステップ 2: DynamoDB テーブルにデータを送信する AWS IoT ルールを作成
以下は、AWS IoT ルールの作成とテストの手順を見やすくまとめたものです。
AWS IoT ルールの作成手順
1.ルールの設定
- ルール名に
wx_data_ddbv2_tutorial
を入力します - SQL のバージョンとして
2016-03-23
を選択します
2.SQL ステートメントの設定
- SQL ステートメントに以下を入力します
SELECT sample_time, device_id, temperature, humidity, barometer, wind.velocity as wind_velocity, wind.bearing as wind_bearing FROM 'device/+/data'
- 「次へ」をクリックします
3.アクションの選択
- アクションとして DynamoDBv2 を選択します
- DynamoDBテーブルには
wx_data
を指定します - IAMロールには新しく
wx_ddbv2_role
を作成します
ステップ 3: AWS IoT ルールと DynamoDB テーブルをテスト
IoT Core MQTTテストクライアントの使用手順
1.サブスクライブ
- IoT Core MQTTテストクライアントを開きます
- トピック
device/+/data
にサブスクライブします
2.メッセージのパブリッシュ
- トピック
device/22/data
に対して、以下のメッセージをパブリッシュします
{
"sample_time": 1,
"device_id": 1,
"temperature": 28,
"humidity": 80,
"barometer": 1013,
"wind": {
"velocity": 22,
"bearing": 255
}
}
これにより、DynamoDBには以下の形式でデータが保存されます。
sample_time | device_id | barometer | humidity | temperature | wind_bearing | wind_velocity |
---|---|---|---|---|---|---|
1 | 1 | 1013 | 80 | 28 | 255 | 22 |
まとめ
このチュートリアルでは、AWS IoT CoreとDynamoDBv2を用いてデバイスデータの管理方法を学びました。
DynamoDBとDynamoDBv2の違いを理解し、それに基づいてデータを保存する方法を実践しました。
参考
- チュートリアル: デバイスデータの DynamoDB テーブルへの保存
- DynamoDB公式ドキュメント
- AWS IoT Core公式ドキュメント