開始使用 Amazon Location 追蹤 - Amazon Location Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使用 Amazon Location 追蹤

本節會引導您建置追蹤應用程式,以擷取裝置位置。

建立追蹤器

建立追蹤器資源,以儲存和處理來自裝置的位置更新。您可以使用 Amazon Location Service 主控台、 AWS CLI或 Amazon Location APIs。

儲存在追蹤器資源中的每個位置更新都可以包括位置準確性的測量,以及有關您要存放之位置或裝置的最多三個中繼資料欄位。中繼資料會儲存為索引鍵值對,並可儲存速度、方向、胎壓或引擎溫度等資訊。

追蹤器篩選位置在收到時更新。這可減少裝置路徑中的視覺雜訊 (稱為抖動 ),並減少錯誤的地理範圍進入和退出事件的數量。這也有助於透過減少啟動的地理評估數量來管理成本。

追蹤器提供三個位置篩選選項,以協助管理成本並減少位置更新中的抖動。

  • 準確度型搭配任何提供準確度測量的裝置使用。大多數行動裝置提供此資訊。每個位置測量的準確性都會受到許多環境因素的影響,包括衛星接收、橫向,以及 Wi-Fi GPS 和藍牙裝置的鄰近程度。大多數裝置,包括大多數行動裝置,都可以提供測量準確度以及測量結果的估計。透過AccuracyBased篩選,如果裝置移動量低於測量的準確度,Amazon Location 會忽略位置更新。例如,如果裝置的兩個連續更新具有 5 m 和 10 m 的準確性範圍,則如果裝置移動小於 15 m,Amazon Location 會忽略第二次更新。Amazon Location 既不會針對地理位置評估忽略的更新,也不會儲存這些更新。

    未提供準確度時,會將其視為零,且測量被視為完全準確。

    注意

    您也可以使用準確性型篩選來移除所有篩選。如果您選擇以準確度為基礎的篩選,但將所有準確度資料覆寫為零,或完全省略準確度,則 Amazon Location 將不會篩選掉任何更新。

  • 距離為基礎的當您的裝置不提供準確度測量,但您仍希望利用篩選來減少抖動和管理成本時使用。 DistanceBased 篩選會忽略裝置在 30 m (98.4 ft) 內移動的位置更新。當您使用DistanceBased位置篩選時,Amazon Location 不會根據地理位置評估這些忽略的更新,也不會儲存更新。

    大多數行動裝置的準確度,包括 iOS 和 Android 裝置的平均準確度,都在 15 公尺以內。在大多數應用程式中,DistanceBased篩選可以減少在地圖上顯示裝置軌跡時位置不準確的影響,以及在裝置接近地理邊界時多個連續進出事件的提升效果。它也可以透過較少的呼叫來評估連結的地理或擷取裝置位置,協助降低應用程式的成本。

  • 時間為基礎的 – (預設) 當您的裝置非常頻繁地傳送位置更新 (每 30 秒超過一次) 時使用,而且您想要在不儲存每次更新的情況下,達成近乎即時的地理評估。 TimeBased篩選中,系統會針對連結的地理圍欄集合評估每個位置更新,但不會儲存每個位置更新。若您的更新頻率超過 30 秒,則每個唯一裝置 ID 每 30 秒只會存放一次更新。

注意

在決定篩選方法和位置更新頻率時,請注意追蹤應用程式的成本。系統會針對每個位置更新向您收取費用,並針對每個連結的地理集合評估位置更新向您收取一次費用。例如,使用以時間為基礎的篩選時,如果您的追蹤器連結至兩個地理系集合,則每個位置更新都會視為一個位置更新請求和兩個地理系集合評估。如果您要報告裝置的位置每 5 秒更新一次,並使用以時間為基礎的篩選,則會針對每個裝置向您收取 720 個位置更新和每小時 1,440 個地理評估的費用。

您的帳單不受每個集合中的地理數量影響。由於每個地理集可能包含最多 50,000 個地理,因此您可能想要將地理集合併為較少的集合,以降低地理評估的成本。

根據預設,每次追蹤的裝置進入或退出連結的地理時,您都會收到 EventBridge 事件。如需詳細資訊,請參閱教學課程:將追蹤器連結至 Amazon Location 中的地理集

您可以針對追蹤器資源的所有篩選位置更新啟用事件。如需詳細資訊,請參閱啟用追蹤器的更新事件

注意

如果您想要使用自己的 AWS KMS 客戶受管金鑰加密資料,則邊界多邊形查詢功能預設會停用。這是因為使用此定界多邊形查詢功能,您的裝置位置的表示將不會使用 AWS KMS 受管金鑰加密。不過,確切的裝置位置仍會使用您的受管金鑰加密。

您可以在建立或更新追蹤器時,將 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 中的追蹤器中的 和 Amazon Location Service 追蹤器API參考PositionFiltering中的 。

  6. (選用) 在 Tags (標籤) 底下,輸入標籤 Key (金鑰)Value (值)。這會新增標籤您的新地理圍欄集合。如需詳細資訊,請參閱標記您的資源

  7. (選用) 在 客戶受管金鑰加密 下,您可以選擇新增客戶受管金鑰 。這會新增對稱客戶受管金鑰,您可以透過預設 AWS 擁有的加密來建立、擁有和管理。如需詳細資訊,請參閱加密靜態資料。

  8. (選用) 在 下KmsKeyEnableGeospatialQueries,您可以選擇啟用地理空間查詢 。這可讓您使用邊界多邊形查詢功能,同時使用客戶AWSKMS受管金鑰加密資料。

    注意

    當您使用繫結多邊形查詢功能時,不會使用 AWS KMS 受管金鑰來加密裝置位置的表示。不過,確切的裝置位置仍會使用您的受管金鑰加密。

  9. (選用) 在EventBridge 組態 下,您可以選擇為篩選的位置更新啟用 EventBridge 事件。每次此追蹤器中裝置的位置更新符合位置篩選評估時,就會傳送事件。

  10. 選擇建立追蹤器

API

使用 Amazon Location 建立追蹤器 APIs

從 Amazon Location Trackers 使用 CreateTracker操作APIs。

下列範例使用 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。這可讓您使用邊界多邊形查詢功能,同時使用客戶 AWS KMS 受管金鑰加密資料。

如需使用邊界多邊形查詢功能的資訊,請參閱 列出您的裝置位置

注意

當您使用邊界多邊形查詢功能時,不會使用 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。這可讓您使用邊界多邊形查詢功能,同時使用客戶 AWS KMS 受管金鑰加密資料。

如需使用邊界多邊形查詢功能的資訊,請參閱 列出您的裝置位置

注意

當您使用邊界多邊形查詢功能時,不會使用 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 。

    範例

    下列範例顯示使用 Amazon Cognito 身分集區進行授權、使用 AWS JavaScript SDK v3 和 Amazon Location JavaScript 驗證協助程式

    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 個金鑰值對供您自己使用。

如果您的追蹤器連結至一或多個地理ofence 集合,則會針對這些地理 (遵循您為追蹤器指定的篩選規則) 評估更新。如果裝置違反地理範圍 (從該區域內移至外部,反之亦然),您將會在 中收到事件 EventBridge。這些 ENTEREXIT事件包括位置更新詳細資訊,包括裝置 ID、時間戳記和任何相關聯的中繼資料。

注意

如需位置篩選的詳細資訊,請參閱 建立追蹤器

如需地理事件的詳細資訊,請參閱 使用 Amazon 對 Amazon 定 Location Service 事件做出反應 EventBridge

使用下列其中一種方法傳送裝置更新:

  • MQTT更新傳送至 AWS IoT Core 資源,並將其連結至您的追蹤器資源。

  • 使用 或 Amazon Location ,API使用 Amazon Location Trackers AWS CLI傳送位置更新APIs。您可以使用 AWS SDKs 從 APIs iOS 或 Android 應用程式呼叫 。

API

使用 Amazon Location 傳送位置更新 APIs

從 Amazon Location Trackers 使用 BatchUpdateDevicePosition操作APIs。

下列範例使用 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 APIs。

API

使用 Amazon Location 從追蹤器取得裝置位置歷史記錄 APIs

從 Amazon Location Trackers 使用 GetDevicePositionHistory操作APIs。

下列範例使用 APIURI請求來取得 的裝置位置歷史記錄 ExampleDevice 從稱為 的追蹤器 ExampleTracker19:05:07(包含) 開始,並於 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 來取得 的裝置位置歷史記錄 ExampleDevice 從稱為 的追蹤器 ExampleTracker19:05:07(包含) 開始,並於 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 參數來建立邊界多邊形查詢。如此一來,當您呼叫 時 ListDevicePositions,只會傳回多邊形內的裝置。

注意

如果您想要使用自己的 AWS KMS 客戶受管金鑰加密資料,則邊界多邊形查詢功能預設會停用。這是因為使用此功能時,不會使用 AWS KMS 受管金鑰來加密裝置位置的表示。不過, 的確切裝置位置仍會使用您的受管金鑰加密。

您可以選擇加入邊界多邊形查詢功能。方法是在建立或更新追蹤器時,將 KmsKeyEnableGeospatialQueries 參數設定為 true。

API

從 Amazon Location Trackers 使用 ListDevicePositions操作APIs。

下列範例是使用選用參數 取得多邊形區域中裝置位置清單的API請求FilterGeometry。此範例會傳回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