Sens'it V3のデータをAWS IoTからDynamoDBV2に書き込む

技術情報

AWS IoTのルールエンジンで"DynamoDBテーブルにメッセージを挿入する"場合は、

tech-181015-1.png

こちら"Sigfox CallbackとAWS IoT連携"を見てください。
ここでは、元となるペイロード(JSON)が下記のような構成になっているが、

sensit.json
{ "device":"B42XXX", "time":"1539592634", "data":"fe0da56c", "battery_level":31, "mode":1, "button_alert":"true", "temperature":421, "humidity":108 } 

各値を計算してからデータベース(DynamoDB)に挿入したい場合です。
例えば、battery_levelは
バッテリー電圧 = (battery x 0.05) + 2.7
のような場合です。
この場合は、"データベーステーブル(DynamoDBv2)の複数列にメッセージを分割する"をアクションとして選択することとなります。

tech-181015-2.png

DynamoDBv2に挿入する方法

こちら"Sigfox CallbackとAWS IoT連携"で、まずは一連の流れを作っていただいて結構です。それを下記の通り修正していきます。
AWS IoTのACTルールを作成します。ルール名は適当につけてもらえれば結構です。ルールクエリステートメントで下図のようなクエリを作ります。

tech-181015-3.png

SELECT 
 (battery_level * 0.05) + 2.7 AS battery_voltage, * 
FROM 'sigfox'

ここでは、'sigfox'トピックからとってきたJSONから"(battery_level * 0.05) + 2.7"した値を"battery_voltage"カラムに、その他すべて()をDynamoDBに挿入します。ということを意味します。
アクションは、
"データベーステーブル(DynamoDBv2)の複数列にメッセージを分割する"*を選択し、挿入先のテーブル名、ロールを設定します。

tech-181015-4.png

ルールのテスト

AWS IoTのテストメニューから"sigfox"トピックにサブスクライブし、Sigfox Callbackで転送されるJSONサンプルを下図のように記載し、[トピックに発行]ボタンを押します。

tech-181015-5.png

すると、DynamoDBのテーブルを見ると下図のように"battery_voltage"というカラムが追加されていることを確認できます。

tech-181015-6.png

あとは、Sens'it v3がデータを送るたびにDynamoDBが更新されていきます。