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が更新されていきます。