次は、DynamoDBとS3に保存するルールを作成します。
先ほどのKinesis Firehoseの時と同じようにルールを作成し、アクションとしてDynamoDBとS3の2つを作ります。
DynamoDB
まず、DynamoDBです。
あらかじめDynamoDBに下記の設定でテーブルを作成します。
今回のデータは下記のようなものなので、プライマリキーとしてserial_no
、ソートキーとしてtimestamp
を指定しました。
{"sound": 385, "light": 3.3203125, "serial_no": 1001, "temp": 26.273446579320307, "timestamp": "2018-07-14T03:16:21.181605+00:00"}
AWS IoTのルール作成画面では、テーブル名、ハッシュキー、レンジキーを指定します。ハッシュキーはDynamoDBのテーブルのプライマリキー、レンジキーはソートキーとなります。ハッシュキー値として、${serial_no}
や${timestamp}
のように指定すると実データの中から値を抽出してセットしてくれます。
あとはAWS IoTからDynamoDBにアクセスするIAMロールを作成し、指定すると、DynamoDBにメッセージが書き込まれるようになります。
S3
S3は、バケット名とキーを指定します。キーは、${topic()}/${timestamp()}.json
のようにすると、トピックとタイムスタンプを使ったキーが生成され、その名前で保存されるようになります。
このように保存されます。