追跡を開始する - Amazon Location Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

追跡を開始する

このセクションでは、デバイスの位置をキャプチャする追跡アプリケーションを構築する手順を説明します。

トラッカーを作成する

トラッカーリソースを作成して、デバイスからの位置の更新を保存して処理します。Amazon Location Service コンソール、AWS CLI、または Amazon Location API を使用できます。

トラッカーリソースに保存される位置の更新はそれぞれ、位置精度の測定値と、位置またはデバイスに関するメタデータで保存したいものを最大 3 つ含めることができます。メタデータはキーと値がペアとして保存されており、速度、方向、タイヤ空気圧、エンジン温度などの情報を保存できます。

トラッカーは、位置の更新を受信するとフィルタリングします。これにより、ジッターと呼ばれるデバイス経路の視覚的なノイズが減り、誤ったジオフェンスへの出入りイベントの数が減ります。そして、ジオフェンス評価が開始される数も減り、コストを管理できます。

トラッカーには 3 つの位置フィルターオプションがあります。コスト管理と位置情報の更新におけるジッターの軽減に役立ちます。

  • 精度ベース — 精度測定が可能なあらゆるデバイスで使用できます。精度測定は、ほとんどのモバイル機器で提供されます。各位置測定の精度は、GPS 衛星の受信状況、地形、Wi-Fi デバイスや Bluetooth デバイスまでの距離など、さまざまな環境要因の影響を受けます。モバイル機器を含むほとんどのデバイスでは、測定と同時にその精度も推定できます。AccuracyBased フィルタリングでは、デバイスの移動距離が測定精度より少ない場合、Amazon Locationは位置の更新を無視します。例えば、デバイスから 2 つの連続した更新を受信し、その精度が 5 m と 10 m だった場合、デバイスの移動距離が 15 m 未満であれば 2 回目の更新は無視されます。Amazon Locationは、無視した更新をジオフェンスと比較して評価したり、保存したりしません。

    精度が提供されない場合はゼロとして扱われ、測定値は完全に正確であると見なされます。

    注記

    精度ベースのフィルタリングを使用してすべてのフィルタリングを削除することもできます。精度ベースのフィルタリングを選択したものの、すべての精度データをゼロに上書きしたり、精度を完全に無視した場合、Amazon Locationは更新をフィルタリングしません。

  • 距離ベース — お使いのデバイスが精度測定を提供しないが、それでもフィルタリングを利用してジッターを減らし、コストを管理したい場合に使用します。DistanceBased フィルタリングでは、デバイスの移動距離が 30 m (98.4 フィート) 未満の場合、位置の更新を無視します。DistanceBased 位置フィルターを使用すると、Amazon Location は無視した更新をジオフェンスと比較して評価したり、保存したりしません。

    iOS および Androidデバイスの平均精度を含め、ほとんどのモバイル機器の精度は 15 m以内です。ほとんどのアプリケーションでは、DistanceBased フィルタリングを使用することで、デバイスの軌跡を地図上に表示するときに位置が不正確になることによる影響や、デバイスがジオフェンスの境界近くにあるときに複数の連続した出入りイベントによるバウンス効果を減らすことができます。また、リンクされたジオフェンスと比較して評価するリクエストや、デバイスの位置を取得するリクエストが減るので、アプリケーションのコスト削減にも役立ちます。

  • 時間ベース — (デフォルト) デバイスが位置の更新を非常に頻繁に (30 秒に 1 回以上) 送信し、すべての更新を保存せずにほぼリアルタイムでジオフェンスの評価を行いたい場合に使用します。TimeBased フィルタリングでは、位置の更新ごとに、リンクされたジオフェンスコレクションと比較して評価しますが、すべてが保存されるわけではありません。更新頻度が 30 秒を超える場合、一意のデバイス ID ごとに 30 秒あたり 1 つの更新のみが保存されます。

注記

フィルタリング方法や位置更新の頻度を決める際には、トラッキングアプリケーションのコストに留意してください。位置の更新ごとに請求され、リンクされた各ジオフェンスコレクションと比較して評価する際にも 1 回請求されます。たとえば、時間ベースのフィルタリングを使用する場合で、トラッカーが 2 つのジオフェンスコレクションにリンクされている場合は、位置の更新ごとに 1 回の位置更新リクエストと 2 回のジオフェンスコレクション評価としてカウントされます。デバイスの位置更新を 5 秒ごとに報告し、時間ベースのフィルタリングを使用している場合は、デバイスごとに 1 時間あたり 720 回の位置更新リクエストと 1,440 回のジオフェンス評価について課金されます。

請求額は、各コレクション内のジオフェンスの数に影響されません。各ジオフェンスコレクションには最大 50,000 のジオフェンスを含めることができるため、ジオフェンスの評価コストを削減するために、ジオフェンスをできるだけ少ないコレクションにまとめることをお勧めします。

デフォルトでは、追跡対象デバイスがリンクされたジオフェンスに出入りするたびに EventBridge イベントが発生します。詳細については、「トラッカーをジオフェンスコレクションにリンクする」を参照してください。

トラッカーリソースのすべてのフィルターされた位置更新のイベントを有効にできます。詳細については、「トラッカーの更新イベントを有効にします。」を参照してください。

注記

ユーザー自身が管理する AWS KMS 顧客管理キーを使用してデータを暗号化する場合、Bounding Polygon Queries 機能はデフォルトで無効になります。これは、Bounding Polygon Queries 機能を使用すると、デバイスの位置情報が AWS KMS 顧客管理キーを使用して暗号化されなくなるためです。ただし、デバイスの正確な位置は引き続き顧客管理キーを使用して暗号化されます。

Bounding Polygon Queries 機能を使用するには、トラッカーを作成または更新するときに KmsKeyEnableGeospatialQueries パラメーターを true に設定します。

Console

Amazon Location コンソールを使用してトラッカーを作成するには

  1. Amazon Location Service コンソール (https://console.aws.amazon.com/location/) を開きます。

  2. 左のナビゲーションペインから、[トラッカー] を選択します。

  3. トラッカーを作成 を選択します。

  4. 以下のフィールドに入力します。

    • 名前 に一意の名前を入力します。例えば、 ですExampleTracker。最大 100 文字。には、英数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) を含めることができます。

    • 説明 – 任意の説明を入力します。

  5. [位置フィルター] で、トラッカーリソースの使用目的に最も適したオプションを選択します。[位置フィルター] を設定しない場合、デフォルト設定は TimeBased です。詳細については、このガイドの「トラッカー」と「Amazon Location Service トラッカー API リファレンス」の「PositionFiltering」を参照してください。

  6. (オプショナル) タグに、タグのキーを入力します。これにより、新しいジオフェンスコレクションにタグが追加されます。詳細については、リソースにタグを付けるを参照してください。

  7. (オプション) [顧客管理キーの暗号化] で、[顧客管理キーの追加] を選択できます。これにより、AWS デフォルトの暗号化ではなく、ユーザーが作成、所有、管理する対照型の顧客管理キーが追加されます。詳細については、「保管中のデータの暗号化」を参照してください。

  8. (オプション) でKmsKeyEnableGeospatialQueries地理空間クエリを有効にすることを選択できます。これにより、Bounding Polygon Queries 機能を使用しながら、顧客の AWS KMS 管理キーを使用してデータを暗号化できます。

    注記

    Bounding Polygon Queries 機能を使用する場合、デバイスの位置情報は AWS KMS 顧客管理キーでは暗号化されません。ただし、デバイスの正確な位置は引き続き顧客管理キーを使用して暗号化されます。

  9. (オプション) EventBridge 設定 で、フィルタリングされた位置更新の EventBridge イベントを有効にすることを選択できます。これにより、このトラッカー内のデバイスの位置更新が位置フィルターの評価を満たすたびにイベントが送信されます。

  10. トラッカーを作成 を選択します。

API

Amazon Location API を使用してトラッカーを作成するには

Amazon Location Trackers API の CreateTracker オペレーションを使用してください。

次の例では、 API リクエストを使用して、 というトラッカーを作成しますExampleTracker。トラッカーリソースは、カスタマーデータを暗号化するためにカスタマーマネージドAWS KMSキーに関連付けられており、 で位置の更新を有効に EventBridgeしません。

POST /tracking/v0/trackers Content-type: application/json { "TrackerName": "ExampleTracker", "Description": "string", "KmsKeyEnableGeospatialQueries": false, "EventBridgeEnabled": false, "KmsKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "PositionFiltering": "AccuracyBased", "Tags": { "string" : "string" } }

KmsKeyEnableGeospatialQueries を有効にしたトラッカーを作成する

次の例では、KmsKeyEnableGeospatialQueries パラメーターが true に設定されています。これにより、Bounding Polygon Queries 機能を使用しながら、AWS KMS 顧客管理キーを使用してデータを暗号化できます。

Bounding Polygon Queries 機能の使用方法については、「」を参照してください。

注記

Bounding Polygon Queries 機能を使用する場合、デバイスの位置情報は AWS KMS 顧客管理キーでは暗号化されません。ただし、デバイスの正確な位置は引き続き顧客管理キーを使用して暗号化されます。

POST /tracking/v0/trackers Content-type: application/json { "TrackerName": "ExampleTracker", "Description": "string", "KmsKeyEnableGeospatialQueries": true, "EventBridgeEnabled": false, "KmsKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "PositionFiltering": "AccuracyBased", "Tags": { "string" : "string" } }
AWS CLI

AWS CLI コマンドを使用してトラッカーを作成するには

create-trackerコマンドを実行します。

次の例では、 を使用して AWS CLI というトラッカーを作成しますExampleTracker。トラッカーリソースは、カスタマーデータを暗号化するためにカスタマーマネージドAWS KMSキーに関連付けられており、 で位置の更新を有効に EventBridgeしません。

aws location \ create-tracker \ --tracker-name "ExampleTracker" \ --position-filtering "AccuracyBased" \ --event-bridge-enabled false \ --kms-key-enable-geospatial-queries false \ --kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"

KmsKeyEnableGeospatialQueries を有効にしたトラッカーを作成する

次の例では、KmsKeyEnableGeospatialQueries パラメーターが true に設定されています。これにより、Bounding Polygon Queries 機能を使用しながら、AWS KMS 顧客管理キーを使用してデータを暗号化できます。

Bounding Polygon Queries 機能の使用方法については、「」を参照してください。

注記

Bounding Polygon Queries 機能を使用する場合、デバイスの位置情報は AWS KMS 顧客管理キーでは暗号化されません。ただし、デバイスの正確な位置は引き続き顧客管理キーを使用して暗号化されます。

aws location \ create-tracker \ --tracker-name "ExampleTracker" \ --position-filtering "AccuracyBased" \ --event-bridge-enabled false \ --kms-key-enable-geospatial-queries true \ --kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"
注記

請求は使用状況によって異なります。他の AWS サービスの利用料金が請求される場合があります。詳細については、「Amazon Location Service 料金」を参照してください。

トラッカーを作成した後、トラッカーの編集 を選択して、説明 、位置フィルタリング 、および EventBridge 設定を編集できます。

リクエストを認証する

トラッカーリソースを作成し、ジオフェンスに対してデバイス位置の評価を始める準備ができたら、リクエストの認証方法を選択します。

  • サービスにアクセスする方法については、「Amazon Location Service へのアクセス」を参照してください。

  • 認証されていないリクエストでデバイスの位置をパブリッシュしたい場合は、Amazon Cognito を使用するとよいでしょう。

    次の例は、AWS JavaScript SDK v3 および Amazon Location を使用して、認証に Amazon Cognito ID プールを使用する方法を示しています認証ヘルパー

    import { LocationClient, BatchUpdateDevicePositionCommand } from "@aws-sdk/client-location"; import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; // Unauthenticated identity pool you created const identityPoolId = "us-east-1:1234abcd-5678-9012-abcd-sample-id"; // Create an authentication helper instance using credentials from Cognito const authHelper = await withIdentityPoolId(identityPoolId); const client = new LocationClient({ region: "us-east-1", // The region containing both the identity pool and tracker resource ...authHelper.getLocationClientConfig(), // Provides configuration required to make requests to Amazon Location }); const input = { TrackerName: "ExampleTracker", Updates: [ { DeviceId: "ExampleDevice-1", Position: [-123.4567, 45.6789], SampleTime: new Date("2020-10-02T19:09:07.327Z"), }, { DeviceId: "ExampleDevice-2", Position: [-123.123, 45.123], SampleTime: new Date("2020-10-02T19:10:32Z"), }, ], }; const command = new BatchUpdateDevicePositionCommand(input); // Send device position updates const response = await client.send(command);

トラッカーをデバイスの位置で更新する

デバイスを追跡するには、デバイスの位置の更新をトラッカーに送信します。これらのデバイス位置やデバイス位置履歴は、後でトラッカーリソースから取得できます。

位置の更新には、デバイス ID、タイムスタンプ、位置が含まれている必要があります。他にも、精度や、キーと値がペアとなったメタデータを最大 3 つまで含めることもできます。

トラッカーが 1 つ以上のジオフェンスコレクションにリンクされている場合、(トラッカーに指定したフィルタリングルールに従って) それらのジオフェンスに対して更新が評価されます。デバイスがジオフェンスエリアを超過すると (エリア内から外部に移動するか、またはその逆)、 でイベントを受信します EventBridge。これらの ENTEREXIT のイベントには、デバイス ID、タイムスタンプ、関連するメタデータなどの位置の更新詳細が含まれます。

注記

位置フィルターの詳細については、「トラッカーを作成する」を参照してください。

ジオフェンスイベントの詳細については、「Amazon での Amazon Location Service イベントへの対応 EventBridge」を参照してください。

デバイスの更新を送信するには、以下のいずれかの方法を使用してください。

  • MQTT アップデートを送信する。AWS IoT Core リソースに送信し、トラッカーリソースにリンクします。

  • Amazon Location Trackers API、AWS CLI、または Amazon Location API を使用して位置情報の更新を送信する。AWS SDK を使用して、iOS または Android アプリケーションから API を呼び出すことができます。

API

Amazon Location API を使用して位置更新を送信するには

Amazon Location Trackers API の BatchUpdateDevicePosition オペレーションを使用してください。

次の例では、 API リクエストを使用して、 のデバイス位置の更新をトラッカー ExampleDeviceに投稿しますExampleTracker

POST /tracking/v0/trackers/ExampleTracker/positions Content-type: application/json { "Updates": [ { "DeviceId": "1", "Position": [ -123.12245146162303, 49.27521118043802 ], "SampleTime": "2022-10-24T19:09:07.327Z", "PositionProperties": { "name" : "device1" }, "Accuracy": { "Horizontal": 10 } }, { "DeviceId": "2", "Position": [ -123.1230104928471, 49.27752402723152 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "3", "Position": [ -123.12325592118916, 49.27340530543111 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "4", "Position": [ -123.11958813096311, 49.27774641063121 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "5", "Position": [ -123.1277418058896, 49.2765989015285 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "6", "Position": [ -123.11964267059481, 49.274188155916534 ], "SampleTime": "2022-10-02T19:09:07.327Z" } ] }
AWS CLI

AWS CLI コマンドを使用して位置更新を送信するには

batch-update-device-positionコマンドを実行します。

次の例では、 を使用してAWS CLI、ExampleDevice-1 および ExampleDevice-2 のデバイス位置の更新をトラッカー に投稿しますExampleTracker

aws location batch-update-device-position \ --tracker-name ExampleTracker \ --updates '[{"DeviceId":"ExampleDevice-1","Position":[-123.123,47.123],"SampleTime":"2021-11-30T21:47:25.149Z"},{"DeviceId":"ExampleDevice-2","Position":[-123.123,47.123],"SampleTime":"2021-11-30T21:47:25.149Z","Accuracy":{"Horizontal":10.30},"PositionProperties":{"field1":"value1","field2":"value2"}}]'

トラッカーからデバイスの位置履歴を取得する

Amazon Location トラッカーリソースは、追跡対象のすべてのデバイスの位置履歴を 30 日間保持します。トラッカーリソースから、関連するすべてのメタデータを含むデバイスの位置履歴を取得できます。次の例では、AWS CLI、または Amazon Location API を使用しています。

API

Amazon Location API を使用してトラッカーからデバイスの位置履歴を取得するには

Amazon Location Trackers API の GetDevicePositionHistory オペレーションを使用してください。

次の例では、API URI リクエストを使用して、 の からExampleTracker始まる 19:05:07 (包括的) というトラッカーExampleDeviceから のデバイス位置履歴を取得し、 の 19:20:07 (排他的) で終了します2020–10–02

POST /tracking/v0/trackers/ExampleTracker/devices/ExampleDevice/list-positions Content-type: application/json { "StartTimeInclusive": "2020-10-02T19:05:07.327Z", "EndTimeExclusive": "2020-10-02T19:20:07.327Z" }
AWS CLI

AWS CLI コマンドを使用してトラッカーからデバイスの位置履歴を取得するには

get-device-position-historyコマンドを実行します。

次の例ではAWS CLI、 を使用して、 の (包括的) からExampleTracker始まる 19:05:07 (包括的) というトラッカーExampleDeviceから のデバイス位置履歴を取得し、 の 19:20:07 (排他的) で終了します2020–10–02

aws location \ get-device-position-history \ --device-id "ExampleDevice" \ --start-time-inclusive "2020-10-02T19:05:07.327Z" \ --end-time-exclusive "2020-10-02T19:20:07.327Z" \ --tracker-name "ExampleTracker"

デバイスの位置のリストを表示する

トラッカーのデバイス位置のリストはAWS CLI、、、または Amazon Location APIs と ListDevicePositions API を使用して表示できます。 ListDevicePositions API を呼び出すと、特定のトラッカーに関連付けられているすべてのデバイスの最新の位置のリストが返されます。デフォルトでは、この API は特定のトラッカーの最新のデバイス位置を結果ページごとに 100 件返します。特定の地域内のデバイスのみを返したい場合は、FilterGeometry パラメーターを使用して Bounding Polygon Query を作成します。を呼び出すと ListDevicePositions、ポリゴン内のデバイスのみが返されます。

注記

ユーザー自身が管理する AWS KMS 顧客管理キーを使用してデータを暗号化する場合、Bounding Polygon Queries 機能はデフォルトで無効になります。この機能を使用すると、デバイスの位置情報は AWS KMS 顧客管理キーでは暗号化されないためです。ただし、デバイスの正確な位置は引き続き顧客管理キーを使用して暗号化されます。

Bounding Polygon Queries 機能の使用を選択することもできます。その場合は、トラッカーを作成または更新するときに KmsKeyEnableGeospatialQueries パラメーターを true に設定します。

API

Amazon Location Trackers API の ListDevicePositions オペレーションを使用してください。

以下の例は、オプションのパラメータ FilterGeometry を使用して多角形エリア内のデバイス位置のリストを取得するための API リクエストです。この例では、Polygon 配列で定義されたエリア内に存在する 3 つのデバイス位置が返されます。

POST /tracking/v0/trackers/TrackerName/list-positions HTTP/1.1 Content-type: application/json { "FilterGeometry": { "Polygon": [ [ [ -123.12003339442259, 49.27425121147397 ], [ -123.1176984148229, 49.277063620879744 ], [ -123.12389509145294, 49.277954183760926 ], [ -123.12755921328647, 49.27554025235713 ], [ -123.12330236586217, 49.27211836076236 ], [ -123.12003339442259, 49.27425121147397 ] ] ] }, "MaxResults": 3, "NextToken": "1234-5678-9012" }

以下に、ListDevicePositions のレスポンスの例を示します。

{ "Entries": [ { "DeviceId": "1", "SampleTime": "2022-10-24T19:09:07.327Z", "Position": [ -123.12245146162303, 49.27521118043802 ], "Accuracy": { "Horizontal": 10 }, "PositionProperties": { "name": "device1" } }, { "DeviceId": "3", "SampleTime": "2022-10-02T19:09:07.327Z", "Position": [ -123.12325592118916, 49.27340530543111 ] }, { "DeviceId": "2", "SampleTime": "2022-10-02T19:09:07.327Z", "Position": [ -123.1230104928471, 49.27752402723152 ] } ], "NextToken": "1234-5678-9012" }
CLI

list-trackersコマンドを実行します。

以下は、多角形エリア内のデバイスのリストを取得するための AWS CLI の例です。

aws location list-device-positions TODO: add arguments add props for filter geo