Amazon Location Service入門ワークショップ-トラッカー
トラッカーでデバイスの位置や移動履歴を追跡できます。
目次
関連記事
- Amazon Location Service入門ワークショップの前提環境準備
- Amazon Location Service入門ワークショップ-マップの操作
- Amazon Location Service入門ワークショップ-ジオコーディング
- Amazon Location Service入門ワークショップ-ルート計算
- Amazon Location Service入門ワークショップ-ジオフェンス
GetDevicePosition
デバイスの位置を取得できます。
1 2 |
aws location get-device-position --device-id Vehicle-1 --tracker-name WorkshopAssets |
ワークショップアプリで[Trackers]を押下して、マップ上をクリックすると、車アイコンのデバイスが追加されます。
これがVehicle-1なので上記のようなコマンドで位置情報が得られます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "DeviceId": "Vehicle-1", "Position": [ 135.50136786073773, 34.6693451694434 ], "PositionProperties": { "DriverId": "321", "VehicleSpeed": "22 km/h" }, "ReceivedTime": "2023-02-04T23:45:51.418000+00:00", "SampleTime": "2023-02-04T23:45:51+00:00" } |
GetDevicePositionHistory
ワークショップアプリでマップを数回クリックしてデバイスを複数地点に移動させて、[View History]ボタンを押下すると移動履歴が表示できます。
GetDevicePositionHistoryアクションで情報が取得できています。
1 2 |
aws location get-device-position-history --device-id Vehicle-1 --tracker-name WorkshopAssets |
CLIの場合、このようなコマンドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
{ "DevicePositions": [ { "DeviceId": "Vehicle-1", "Position": [ 135.50240395254173, 34.66936701898287 ], "PositionProperties": { "DriverId": "321", "VehicleSpeed": "44 km/h" }, "ReceivedTime": "2023-02-04T23:32:45.676000+00:00", "SampleTime": "2023-02-04T23:32:45+00:00" }, { "DeviceId": "Vehicle-1", "Position": [ 135.50136786073773, 34.6693451694434 ], "PositionProperties": { "DriverId": "321", "VehicleSpeed": "22 km/h" }, "ReceivedTime": "2023-02-04T23:45:51.418000+00:00", "SampleTime": "2023-02-04T23:45:51+00:00" }, ~省略~ ] } |
位置情報のリストが取得できます。
この情報は30日間Amazon Location Serviceに保存されています。
30日間以上保存が必要な場合は定期的に出力してS3などに保存します。
BatchUpdateDevicePosition
デバイスを移動させます。
1 2 3 4 5 6 7 |
aws location batch-update-device-position \ --tracker-name WorkshopAssets \ --updates Accuracy={Horizontal=24},\ DeviceId=Vehicle-1,\ Position=135.527926,34.687185,\ SampleTime=$(date +%s) |
大阪城に移動させるコマンドです。
このコマンドではドライバーIDや速度といった属性をもたせることができていません。
パラメータにPositionPropertiesを追加することでもたせられます。
1 2 3 4 5 6 7 8 |
aws location batch-update-device-position \ --tracker-name WorkshopAssets \ --updates Accuracy={Horizontal=24},\ DeviceId=Vehicle-1,\ Position=135.492302,34.700360,\ SampleTime=$(date +%s),\ PositionProperties='{DriverId=321,VehicleSpeed="14 km/h"}' |
IoT CoreとMQTTを使ったトラッキング
IoT CoreルールからLambda関数を呼び出してトラッカーを更新します。
IAMロールの作成
Lambda関数用のIAMロールを作成しました。
ポリシーは、AWS管理ポリシーAWSLambdaBasicExecutionRoleと、次のインラインポリシーを追加しました。
1 2 3 4 5 6 7 8 9 10 11 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:BatchUpdateDevicePosition", "Resource": "arn:aws:geo:us-east-1:123456789012:tracker/WorkshopAssets" } ] } |
Lambda関数の作成
ワークショップ手順に用意されている次のコードでPython3.9ランタイムのLambda関数を作成しました。
IoT Coreイベントから渡されるlocation情報などでトラッカーを更新するコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from datetime import datetime import json import os import boto3 TRACKER_NAME = "WorkshopAssets" def lambda_handler(event, context): update = { "DeviceId": event["payload"]["deviceid"], "SampleTime": datetime.fromtimestamp(event["payload"]["timestamp"]).strftime("%Y-%m-%dT%H:%M:%SZ"), "Position": [ event["payload"]["location"]["long"], event["payload"]["location"]["lat"] ] } if "accuracy" in event["payload"]: update["Accuracy"] = event["payload"]['accuracy'] if "positionProperties" in event["payload"]: update["PositionProperties"] = event["payload"]['positionProperties'] client = boto3.client("location") response = client.batch_update_device_position(TrackerName=TRACKER_NAME, Updates=[update]) return { "statusCode": 200, "body": json.dumps(response) } |
AWS IoT Coreルールの作成
IoT Coreにアクセスして、[メッセージのルーティング]-[ルール]でルールの作成をしました。
SQLステートメントは手順通りSELECT * FROM ‘devices/Vehicle-1’にしました。
作成したLambda関数を指定しました。
テスト
AWS Iot Coreコンソールの[MQTT テストクライアント]-[トピックに公開する]で、トピック名devices/Vehicle-1として、次を設定しました。
timestampは過去30日以内が必要なので、ターミナルでdate +%sで求めました。
1 2 3 4 5 6 7 8 9 10 |
{ "payload": { "deviceid": "Vehicle-1", "timestamp": 1675584473, "location": { "lat": 34.652523, "long": 135.506286 }, "accuracy": { "Horizontal": 20.5 }, "positionProperties": { "DriverId": "321", "VehicleSpeed": "28 km/h" } } } |
トラッカーが更新された車が通天閣に移動しました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2023/01/9784815617929-1-407x596.jpg)
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2024/01/9784815625382-3-420x596.jpg)
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
![](https://www.shuwasystem.co.jp//images/book/637791.jpg)
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
![](https://book.mynavi.jp/files/topics/135344_ext_06_0.jpg?v=1673514682)
「AWSではじめるLinux入門ガイド」という本を書きました。
![](https://www.yamamanx.com/wp-content/uploads/2023/12/81Rp5O9We6L._SY522_.jpg)
![@yamamanx](https://www.yamamanx.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Client VPNの接続ログを確認しました
AWS Client VPNを設定しましたで証明書とかせっかく作ったので、いろい …
-
-
ECR(Amazon Elastic Container Registry)にコンテナイメージをアップロードする
「Pandocサーバーのコンテナイメージを作成する」で作成したイメージをAWS …
-
-
Amazon Pollyを使って覚えたい資料を耳から身体に染み込ませる
Amazon Pollyを使うとソースコードを一切かかなくても、テキストを音声に …
-
-
AWS Lambda(Python)でDynamoDB テーブルを日次で削除/作成(オートスケーリング付き)
この記事はAWS #2 Advent Calendar 2018に参加した記事で …
-
-
EC2 VyOSで/etc/resolv.confを設定しました
EC2でVyOSを起動してSSHで接続して確認していたところ、どうもVyOSから …
-
-
AWS Systems Manager セッションマネージャを使用するために必要な設定
AWS Systems Manager セッションマネージャを使用するために必要 …
-
-
CloudWatch LogsメトリクスフィルタでNginxのaccess_logから転送バイト数をモニタリングする
ユーザーガイドのApache ログからのフィールドの抽出を見てて、これ、Ngin …
-
-
ALBのヘルスチェックでPHPとMySQL接続をチェック
当ブログで504エラーが発生して、オートスケーリングにより自動でインスタンスが置 …
-
-
Amazon API Gatewayでモックを作る
超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …
-
-
Amazon Aurora Serverless のログをCloudWatch Logsに出力する
WordPress W3 Total Cache のDatabaseCacheを …