SORACOMのGPSマルチユニットで取得可能なデータをQuickSightで可視化に挑戦してみました。今回は全体のボリュームも多いため複数に分割してまとめます。
GPSマルチユニットとは
SORACOMのIoTデバイス通販で購入可能なSORACOMデバイスの1つです。1台で位置情報、温度、湿度、加速度センサーのデータを取得でき、バッテリーも内蔵しているので気軽に試しやすいデバイスです。詳しくは公式サイトを確認してください。

GPSマルチユニットSORACOM Edition(バッテリー内蔵タイプ)スターターキット - IoTデバイス通販 - SORACOM (ソラコム) IoTストア
IoTデバイス通販 - SORACOM (ソラコム) IoTストアなら、IoTシステム構築に必要な専用デバイスが1個からすぐに届く、デバイス選定からクラウド連携までを解説した実践レシピ集も無料公開しています。
GPSマルチユニットの使い方や初期設定については以下を確認してください。

GPS マルチユニット SORACOM Edition ユーザーガイド | IoT デバイス | ソラコムユーザーサイト - SORACOM Users
IoT に関わるアイディアを実現するために、ソラコムが提供するデバイスやサービスの基本的な利用方法を説明するサイトです。開発者向けの API リファレンスや SORACOM CLI などを利用できます。
参考にしたダッシュボード
GPSマルチユニットのデータをSORACOM Lagoon 3で可視化したサンプルダッシュボードがあるので、同等のものをQuickSightで再現することにしました。
https://try.soracom.io/lagoon-gallery/gps-multiunit-sample
GPSマルチユニットのデータをS3に保存
SORACOM GPSマルチユニットから送信された各種センサーデータ(位置情報、温度、湿度、加速度)をAWSのS3 (Simple Storage Service) に保存する設定を行います。基本的なデータの流れは、以前ご紹介したIoTボタンのS3保存と同様です。まだご覧になっていない方は、以下の記事も参考にしてください。
それぞれの設定は以下の通りです。
IAMポリシーの作成
- ポリシー名:soracom-gps-quicksight-iot-policy (例)
- 許可ポリシー:以下を参照(今回はIoT Coreのトピックは「GpsMultiunit_topic/*」を指定)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "iot:Publish",
"Resource": "arn:aws:iot:ap-northeast-1:XXXXXXXXXX:topic/GpsMultiunit_topic/*"
}
]
}

IAMロールの作成
- ロール名:soracom-gps-quicksight-iot-role (例)
- 許可ポリシー:soracom-gps-gps-multiunit-test-aws-iot-policy(上記で作成)
- 信頼されたエンティティ:以下を参照(SORACOM の日本カバレッジの AWS アカウントを許可、外部IDには任意の推測されにくい文字列を設定してください。例:「External-ID-p7KE92QXv4PrHKM3」)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::762707677580:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "External-ID-p7KE92QXv4PrHKM3"
}
}
}
]
}


IoT Core ルールの作成
- ルール名:transferS3ForGpsMultiunit
- SQLのバージョン:2016-03-23
- SQLステートメント:以下を参照
SELECT * FROM 'GpsMultiunit_topic/#'
- アクション1:S3 bucket
- S3 URL:ご自身のS3バケット名を入力してください
- このメッセージのS3キー:保存したいS3キーのプレフィックスを入力してください (例: IoT-Core/soracom-gpsmultiunit/${parse_time(‘yyyyMMddHHmmss’, timestamp(), ‘Asia/Tokyo’)}.json)
- IAMロール:適切なIAMロールを選択してください (S3への書き込み権限を持つロールが必要です)


SORACOM 認証ストアの作成
- 認証情報ID:AWS-IAM-role-credentials-Gps-Multiunit-Publish
- 種別:AWS IAM ロール認証情報
- ロール ARN:作成したロールのARN
- 外部ID:IAMロールで指定した任意の外部ID

SORACOM Air for セルラー設定
- バイナリーパーサー:@gpsmultiunit

SORACOM Funnelの設定
- 転送サービス先:AWS IoT
- 転送先URL:https://[ご自身のAWS IoT Core データエンドポイント]:8883/topics/GpsMultiunit_topic/#{imsi}
- 認証情報:AWS-IAM-role-credentials-Gps-Multiunit-Publish
- 送信データ形式:JSON

ここまで設定すると、SORACOM GPSマルチユニットから送信されたデータがAWS IoT Coreを経由して、指定したS3バケットにJSONファイルとして保存されることを確認できるはずです。


次のステップへ
次は、S3に保存されたJSONファイルをAWS Glueでデータカタログに登録し、AWS AthenaでSQLクエリを実行できるようにする手順に進みます。これにより、QuickSightでの可視化に必要なデータを効率的に抽出・加工することが可能になります。
コメント