技術情報
Sens'it V3のデータをAWS IoTからDynamoDBV2に書き込む
2018.10.15
AWS IoTのルールエンジンで"DynamoDBテーブルにメッセージを挿入する"場合は、

こちら"Sigfox CallbackとAWS IoT連携"を見てください。
ここでは、元となるペイロード(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)の複数列にメッセージを分割する"をアクションとして選択することとなります。

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

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

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

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

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