LoginSignup
1
0

More than 3 years have passed since last update.

MQTTでAWS DynamoDBに保存

Last updated at Posted at 2021-04-03

デバイスに接続されたセンサーからのデータをAWS DynamoDBに保存するとき、MQTTでデータを受け取ってDynamoDBに記録する部分を紹介します。
MySokuteiESP32.png
この方法では、デバイスからはJSONで送りさえすれば、JSONのキーごとにバラしてDynamoDBに記録できます。デバイスに埋め込むプログラム側でキーを自由に決められるため、データ確認には便利です。

JSON
{
    "key1": "value1",
    "key2": "value2",
    ...
}

なお、AWSアカウントは開設済みで、AWSコンソールには AdministratorAccess のポリシーがアタッチされたIAMユーザでログインしていることが前提です。

DynamoDBテーブルの作成

センサデータを記録するための DynamoDB テーブルを作成します。

  1. DynamoDB コンソール を開き、Create Table をクリックする。
  2. Create DynamoDB table において:

    a. Table namedht22_ddb_table と付ける。
    b. Primary key は次のように入力する。

    • Partition keydevice_id と入力し、右側のリストから Stringを選ぶ。
    • Add sort key にチェックの上で server_timestamp と入力し、右側のリストから Number を選ぶ。

    c. ページの最下部の Create をクリックする。

IoT ルールの作成

パブリッシュされたメッセージをキーごとに分解して、DynamoDBテーブルの各列に記録できるようにします。

  1. AWS Iot コンソールで、Act > Rules を選ぶ。
  2. Create をクリックする。
  3. Namedht22_ddb_rule と付ける。
  4. Rule query statement において、以下のように入力する。

    SELECT '01'       as device_id
         ,timestamp() as server_timestamp
         ,*
    FROM 'esp32/pub'
    

JSONのキーを使ってSQLを組み立てています。Partition key の device_id は、ここでは固定値にします。Sort key には、タイムスタンプを取得します。*の部分がJSONのキーを表していますが、次のアクションの指定により、バラしてDynamoDBに記録してくれます。

  1. Set one or more actions において、Add action をクリックし、Split message into multiple columns of a DynamoDB table (DynamoDBv2) を選ぶ。

  2. Configure action をクリックする。

  3. Table name で、先ほど作成した dht22_ddb_table を選ぶ。

  4. Choose or create a role to grant AWS IoT access to perform this action において、Create role を選ぶ。

  5. Create a new role の画面で、Namedht22_ddb_role と付けて、Create role をクリックする。

  6. Add action をクリックする。

  7. Create rule をクリックする。

MQTT test client でのテスト

試しに esp32/pub にパブリッシュして、DynamoDB に記録できることを確認します。

  1. AWS Iot コンソールで、Test を選ぶ。
  2. Topic nameesp32/pub と入力する。
  3. Message payload は、デフォルトのまま:

    {
      "message": "Hello from AWS IoT console"
    }
    

    にして、Publish をクリックする。

  4. DynamoDB コンソール を開き、Tables を選ぶ。

  5. dht22_ddb_table を選び、Items タブで "message" カラムに "Hello from AWS IoT console" が記録されていることが確認できる。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0