今までのお仕事履歴 & まったりお仕事募集中♪

【質の良い無料コンテンツ紹介】

【ブラックレーベル】謎解き特集!【SCRAPゲームブック】

【通信制大学】産業能率大学に三年次編入しました

【悲報】ジュニアNISAで、買い付け口座を間違えていた話【NISA預りと特定預りは違うのよ】

当サイトではアフィリエイト広告を利用して商品を紹介しています。

【AWS IoTCore】複数データのJSONをIoTCoreでさばく

AWS

簡単に出来るわりに方法を見かけなかったので書いておく。

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データを取り込めるようになる

これで複数データのJSONデータを取り込みつつ、動的パーテーションにてデータの振り分けを行うことができるようになる。

コメント