簡単に出来るわりに方法を見かけなかったので書いておく。
IoTCoreで収集したデータを、種別ごとにフォルダ分けする
構成例
できること
IoTCoreで収集したデータをkinesis(firehose/配信ストリーム)経由で取り込み、データ種別によりフォルダ分けすることが出来る。また、この時、複数データのJSONを取り込む方法をご紹介する。
IoTCore---Kinesis---S3についての説明は公式より提供されている「AWS IoT Core 初級ハンズオン」をやると、理解できるかと思われる。
「1. はじめに」~「3. IoT Core のセットアップ」、「6. データレイクの作成」で理解できるはずだ。やってみよう。
設定例(動的パーテーション)
データ種別によりデータを振り分ける機能は、kinesisの動的パーテーションという機能が提供されており、簡単に設定可能だ。
詳しい説明は割愛するが、こんな感じに設定すると良い。
この設定を行った状態で、IoTCoreに以下のデータを流すと
{
"type":"type1",
"date":"2023/04/22 12:00:00",
"value":100
}
パーテーションに指定されたキーである「type」に入っている値の「type1」でフォルダ分けされるイメージである。なので、
{
"type":"type3",
"date":"2023/04/22 12:00:00",
"value":200
}
と、送信すると今度は「type3」と異なるディレクトリに振り分けられる。
上記の状態で複数データのJSONに対応する
では、本題に入ろう。
上記の内容を理解した上で、たとえばIoT端末の都合で、JSONデータを一気に送信したい場合があると想定する。
その場合、まず送るデータを以下の形式に変更する必要がある。
[
{
"type":"type2",
"date":"2023/04/22 12:00:00",
"value":100
},
{
"type":"type1",
"date":"2023/04/22 12:00:00",
"value":200
},
{
"type":"type5",
"date":"2023/04/22 12:00:00",
"value":300
},
{
"type":"type2",
"date":"2023/04/22 12:00:00",
"value":400
}
]
この上で、IoTCoreのルールアクションのバッチモードを有効にする必要がある。
これで複数データのJSONデータを取り込みつつ、動的パーテーションにてデータの振り分けを行うことができるようになる。
コメント