本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
開始使用 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 主控台建立追蹤器
-
在 開啟 Amazon Location Service 主控台https://console.aws.amazon.com/location/。
-
在左側導覽窗格中,選擇追蹤器 。
-
選擇建立追蹤器 。
-
填寫下列欄位:
-
在位置篩選 下,選擇最符合您打算如何使用追蹤器資源的選項。如果您未設定位置篩選 ,則預設設定為 TimeBased
。如需詳細資訊,請參閱本指南了解 Amazon Location Service 中的追蹤器中的 和 Amazon Location Service 追蹤器API參考PositionFiltering
中的 。
-
(選用) 在 Tags (標籤) 底下,輸入標籤 Key (金鑰) 與 Value (值)。這會新增標籤您的新地理圍欄集合。如需詳細資訊,請參閱標記您的資源。
-
(選用) 在 客戶受管金鑰加密 下,您可以選擇新增客戶受管金鑰 。這會新增對稱客戶受管金鑰,您可以透過預設 AWS 擁有的加密來建立、擁有和管理。如需詳細資訊,請參閱加密靜態資料。
-
(選用) 在 下KmsKeyEnableGeospatialQueries,您可以選擇啟用地理空間查詢 。這可讓您使用邊界多邊形查詢功能,同時使用客戶AWSKMS受管金鑰加密資料。
當您使用繫結多邊形查詢功能時,不會使用 AWS KMS 受管金鑰來加密裝置位置的表示。不過,確切的裝置位置仍會使用您的受管金鑰加密。
-
(選用) 在EventBridge 組態 下,您可以選擇為篩選的位置更新啟用 EventBridge 事件。每次此追蹤器中裝置的位置更新符合位置篩選評估時,就會傳送事件。
-
選擇建立追蹤器 。
- 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
"
在建立追蹤器之後,您可以選擇編輯追蹤器 來編輯描述 、位置篩選 和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。這些 ENTER
或 EXIT
事件包括位置更新詳細資訊,包括裝置 ID、時間戳記和任何相關聯的中繼資料。
使用下列其中一種方法傳送裝置更新:
- 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
從稱為 的追蹤器 ExampleTracker
從 19: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
從稱為 的追蹤器 ExampleTracker
從 19: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