

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

# Amazon Location Service 追蹤器
<a name="trackers"></a>

![\[此圖表說明如何建立和使用追蹤器資源。\]](http://docs.aws.amazon.com/zh_tw/location/latest/developerguide/images/illustration-trackers.PNG)


**注意**  
追蹤器儲存會自動使用 AWS 擁有的金鑰加密。您可以使用您管理的 KMS 金鑰新增另一層加密，以確保只有您可以存取資料。如需詳細資訊，請參閱[Amazon Location Service 的靜態資料加密](encryption-at-rest.md)。

追蹤器會存放裝置集合的位置更新。追蹤器可用來查詢裝置的目前位置或位置歷史記錄。它會儲存更新，但在儲存之前篩選位置，以減少儲存空間和視覺雜訊。

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

追蹤器位置篩選和查詢本身很有用，但追蹤器在與地理圍欄配對時特別有用。您可以將追蹤器連結至一或多個地理圍欄集合資源，且位置更新會根據這些集合中的地理圍欄自動評估。正確使用篩選也可以大幅降低地理圍欄評估的成本。

1. 首先，在 AWS 帳戶中建立追蹤器資源。

1. 接著，決定如何將位置更新傳送至追蹤器資源。使用 [AWS SDKs](dev-sdks.md)將追蹤功能整合到您的行動應用程式。或者，您也可以遵循使用 step-by-step[指示來使用 MQTT](tracking-using-mqtt.md)。

1. 您現在可以使用追蹤器資源記錄位置歷史記錄，並在地圖上將其視覺化。

1. 您也可以將追蹤器資源連結至一或多個地理圍欄集合，以便傳送至追蹤器資源的每個位置更新都會自動針對所有連結地理圍欄集合中的所有地理圍欄進行評估。您可以在 Amazon Location 主控台的追蹤器資源詳細資訊頁面上或使用 Amazon Location Trackers API 來連結資源。

1. 然後，您可以使用 Amazon CloudWatch 和 等服務整合監控 AWS CloudTrail。如需詳細資訊，請參閱 [使用 Amazon CloudWatch 監控](cloudwatch.md) 及 [使用 監控和記錄 AWS CloudTrail](cloudtrail.md)。

## 功能
<a name="tracker-filtering-concepts"></a>
+ **位置篩選** – 追蹤器可以自動篩選傳送給他們的位置。您可能會想要篩選掉部分裝置位置更新的原因有很多。如果您的系統每分鐘只會傳送報告，您可能想要依時間篩選裝置，每 30 秒只會儲存和評估位置。即使您更頻繁地監控，您可能想要篩選位置更新，以清除與 GPS 硬體和位置報告相關聯的固有雜訊。其準確度並非 100% 完美，因此即使固定的裝置似乎也稍微移動。在低速時，此*抖動*會導致視覺雜亂，如果裝置靠近地理的邊緣，可能會導致錯誤的進入和退出事件。

  位置篩選的作用是追蹤器收到位置更新、減少裝置路徑 （抖動） 中的視覺雜訊、減少假地理圍欄進入和離開事件的數量，以及透過減少存放的位置更新數和觸發的地理圍欄評估來協助管理成本。

  追蹤器提供三種位置篩選選項，以協助管理成本並減少位置更新中的抖動。
+ **準確度型** – *搭配任何提供準確度測量的裝置使用。大多數 GPS 和行動裝置都提供此資訊。*

  每個位置測量的準確性都會受到許多環境因素的影響，包括 GPS 衛星接收、景觀，以及 WiFi 和藍牙裝置的鄰近性。大多數裝置，包括大多數行動裝置，都可以提供測量準確度與測量結果的預估值。透過`AccuracyBased`篩選，如果裝置移動小於測量的準確性，Amazon Location 會忽略位置更新。

  例如，如果裝置的兩個連續更新的準確性範圍為 5 公尺和 10 公尺，則如果裝置移動少於 15 公尺，Amazon Location 會忽略第二個更新。Amazon Location 不會針對地理圍欄評估忽略的更新，也不會存放它們。

  未提供準確性時，會將其視為零，且測量會被視為完全準確，而且不會將篩選套用至更新。
**注意**  
您可以使用準確性型篩選來移除所有篩選。如果您選擇以準確性為基礎的篩選，但將所有準確性資料覆寫為零，或完全省略準確性，則 Amazon Location 不會篩選掉任何更新。
+ 以**距離為基礎** – *當您的裝置不提供準確性測量，但您仍希望利用篩選來減少抖動和管理成本時使用。*

  `DistanceBased` 篩選會忽略裝置移動不到 30 公尺 (98.4 英呎） 的位置更新。當您使用`DistanceBased`位置篩選時，Amazon Location 不會針對地理位置評估這些忽略的更新，也不會儲存更新。

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

  如果您想要篩選以距離為基礎的篩選，但您的裝置不提供準確性測量，或想要篩選掉比以準確性為基礎的更新數量更多，則很有用。
+ **時間型** – （預設） *當您的裝置非常頻繁地傳送位置更新時 （每 30 秒超過一次），而且您想要在不儲存每次更新的情況下，達成近乎即時的地理圍欄評估時使用 。 *

  在`TimeBased`篩選中，會根據連結的地理圍欄集合評估每個位置更新，但不會儲存每個位置更新。若您的更新頻率超過 30 秒，則每個唯一裝置 ID 每 30 秒只會存放一次更新。

  當您想要存放較少位置，但希望針對相關聯的地理圍欄集合評估每個位置更新時，時間型篩選特別有用。

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

## Amazon Location Service 追蹤器的使用案例
<a name="trackers-use-cases"></a>

以下是 Amazon Location Service 追蹤器的一些常見用途。

**使用具有地理ofences 的追蹤器**

追蹤器在與地理圍欄配對時提供額外的功能。您可以透過 Amazon Location 主控台或 API，將追蹤器與地理圍欄集合建立關聯，以自動評估追蹤器位置。每次追蹤器收到更新的位置時，都會針對集合中的每個地理圍欄評估該位置，並在 Amazon EventBridge 中產生適當的 `ENTER` 和 `EXIT`事件。您也可以將篩選套用至追蹤器，並根據篩選，只需評估有意義的位置更新，即可降低地理圍欄評估的成本。

如果您在追蹤器收到一些位置更新後，將追蹤器與地理圍欄集合建立關聯，則關聯後的第一個位置更新會被視為地理圍欄評估的初始更新。如果位於地理圍欄內，您會收到 `ENTER`事件。如果它不在任何地理圍欄內，無論先前狀態為何，您都不會收到`EXIT`事件。

**改善現場服務操作 ** 

使用即時追蹤在您的行動人力資源上保持脈動。設定客戶網站和服務區域的地理位置，以便在員工抵達和離開時收到提醒。使用位置資料來最佳化排程、分派最近的可用技術人員，並減少回應時間。讓您的現場團隊 （例如您的管道或 HVAC 修復業務） 更有效率地工作，同時提升客戶體驗。

**監控和控制關鍵資產**

利用 Amazon Location Service 追蹤您寶貴的設備、庫存和其他行動資產的即時位置和狀態。設定地理圍欄以接收有關未經授權移動或移除的提醒，從而增強安全性和合規性。使用此位置可見性可改善資產使用率、最佳化維護排程，並確保您的關鍵資源隨時納入考量。一律精確監控您的重型機器、IT 硬體或零售庫存、減少損失，並做出更明智的操作決策。

**增強供應鏈可見性**

利用 Amazon Location Service 追蹤整個供應鏈的貨物和交付。定義分佈中心、存放區和其他關鍵設施的地理圍欄，以監控庫存和資產的移動。使用即時位置資料來改善庫存管理、最佳化物流規劃，並提供卓越的客戶體驗。取得供應鏈操作的end-to-end可見性、識別瓶頸，並做出可提高效率和回應能力的資料驅動型決策。

**以位置為基礎的行銷**

釋放位置資料的強大功能，以增強您的地理行銷工作。使用 Amazon Location Service 設定競爭對手位置、事件和高流量區域的虛擬邊界。當客戶進入這些地理圍欄區域時，觸發個人化廣告、優惠和通知。分析客流量模式，以最佳化廣告配置，並發現新業務據點的主要網站。監控您自有地理圍欄空間內的客戶移動，以深入了解瀏覽行為和path-to-purchase。結合即時位置追蹤與精確度幾何，提供超目標、情境式的參與，推動實體世界的銷售和忠誠度。

# 追蹤器概念
<a name="tracking-components"></a>

本節詳細說明常見的追蹤器概念。

## 常見 Amazon Location Service 追蹤器術語
<a name="tracking-terminology"></a>

**追蹤器資源**  
從裝置接收位置更新 AWS 的資源。追蹤器資源支援位置查詢，例如目前和歷史裝置位置。將追蹤器資源連結至地理圍欄集合會自動針對連結地理圍欄集合中的所有地理圍欄評估位置更新。

**追蹤的位置資料**  
追蹤器資源會隨著時間儲存裝置的相關資訊。資訊包含一系列位置更新，其中每次更新都包含位置、時間和選用中繼資料。中繼資料可以包含位置的準確性，以及最多三個鍵/值對，以協助您追蹤每個位置的金鑰資訊，例如速度、方向、輪胎壓力、剩餘油量或所追蹤車輛的引擎溫度。追蹤器會維護裝置位置歷史記錄 30 天。

**位置篩選**  
位置篩選可協助您控制成本並改善追蹤應用程式的品質，方法是在儲存或評估更新之前，篩選掉未提供寶貴資訊的位置更新。  
您可以選擇 `AccuracyBased`、 `DistanceBased`或 `TimeBased`篩選。根據預設，位置篩選設定為 `TimeBased`。  
您可以在建立或更新追蹤器資源時設定位置篩選。

**RFC 3339 時間戳記格式 **  
Amazon Location Service 追蹤器使用 [RFC 3339](https://tools.ietf.org/html/rfc3339) 格式，其日期和時間遵循[國際標準化組織 (ISO) 8601](https://www.iso.org/iso-8601-date-and-time-format.html) 格式。  
格式為 "YYYY-MM-DDThh：mm：ss.sssZ\$100：00"：  
+ `YYYY-MM-DD` — 代表日期格式。
+ `T` — 表示時間值將遵循。
+ `hh:mm:ss.sss` — 以 24 小時格式表示時間。
+ `Z` — 表示使用的時區是 UTC，可跟隨與 UTC 時區的偏差。
+ `+00:00` — 選擇性地指出與 UTC 時區的偏差。例如，\$101：00 表示 UTC \$1 1 小時。
**範例**  
2020 年 7 月 2 日下午 12：15：20，調整至 UTC 時區的額外 1 小時。  

```
2020-07-02T12:15:20.000Z+01:00
```

# 開始使用 Amazon Location Service 追蹤器
<a name="start-tracking"></a>

本節提供建立和使用追蹤器與 Amazon Location 的完整指南。追蹤器可讓您儲存、處理和評估裝置位置，同時篩選位置更新，以減少雜訊和管理成本。透過進階位置篩選選項、支援連結的地理圍欄集合，以及與 EventBridge 和 IoT Core 等 AWS 服務的整合，追蹤器可針對您的特定需求，提供準確的即時追蹤和地理圍欄應用程式。

**Topics**
+ [建立追蹤器](start-create-tracker.md)
+ [驗證您的請求](tracking-identity-pool.md)
+ [使用裝置位置更新追蹤器](send-location-updates.md)
+ [從追蹤器取得裝置的位置歷史記錄](get-location-history.md)
+ [列出您的裝置位置](list-device-positions.md)

# 建立追蹤器
<a name="start-create-tracker"></a>

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

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

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

追蹤器提供三種位置篩選選項，以協助管理成本並減少位置更新中的抖動。
+ **準確度型** – *搭配任何提供準確度測量的裝置使用。大多數行動裝置提供此資訊。*每個位置測量的準確性都會受到許多環境因素的影響，包括 GPS 衛星接收、景觀，以及 Wi-Fi 和藍牙裝置的鄰近性。大多數裝置，包括大多數行動裝置，都可以提供測量準確度與測量結果的預估值。透過`AccuracyBased`篩選，如果裝置移動小於測量的準確性，Amazon Location 會忽略位置更新。例如，如果裝置連續兩次更新的準確性範圍為 5 公尺和 10 公尺，則如果裝置移動不到 15 公尺，Amazon Location 會忽略第二次更新。Amazon Location 不會針對地理圍欄評估忽略的更新，也不會存放它們。

   未提供準確性時，會將其視為零，且測量值會被視為完全準確。
**注意**  
您也可以使用準確性型篩選來移除所有篩選。如果您選擇以準確性為基礎的篩選，但將所有準確性資料覆寫為零，或完全省略準確性，則 Amazon Location 不會篩選掉任何更新。
+ 以**距離為基礎** – *當您的裝置不提供準確度測量，但您仍希望利用篩選來減少抖動和管理成本時使用。* `DistanceBased` 篩選會忽略裝置移動不到 30 公尺 (98.4 英呎） 的位置更新。當您使用`DistanceBased`位置篩選時，Amazon Location 不會針對地理位置評估這些忽略的更新，也不會存放更新。

  大多數行動裝置的準確性，包括 iOS 和 Android 裝置的平均準確性，都在 15 公尺內。在大多數應用程式中，`DistanceBased`篩選可以減少在地圖上顯示裝置軌跡時位置不準確的影響，以及在裝置接近地理邊界時多個連續進入和退出事件的彈跳效果。它也可以透過較少的呼叫來評估連結的地理圍欄或擷取裝置位置，協助降低應用程式的成本。
+ **時間型** – （預設） *當您的裝置非常頻繁地傳送位置更新時 （每 30 秒超過一次），而且您想要在不儲存每次更新的情況下，達成近乎即時的地理圍欄評估時使用 。 *在`TimeBased`篩選中，會根據連結的地理圍欄集合評估每個位置更新，但不會儲存每個位置更新。若您的更新頻率超過 30 秒，則每個唯一裝置 ID 每 30 秒只會存放一次更新。

**注意**  
在決定您的篩選方法和位置更新的頻率時，請注意追蹤應用程式的成本。系統會針對每個位置更新向您收費，並針對每個連結的地理圍欄集合評估位置更新向您收費一次。例如，使用以時間為基礎的篩選時，如果您的追蹤器連結至兩個地理圍欄集合，則每個位置更新都會計為一個位置更新請求和兩個地理圍欄集合評估。如果您要每 5 秒報告一次裝置的位置更新，並使用以時間為基礎的篩選，則會針對每個裝置向您收取 720 個位置更新和每小時 1，440 個地理圍欄評估的費用。  
您的帳單不受每個集合中的地理圍欄數量影響。由於每個地理圍欄集合最多可包含 50，000 個地理圍欄，因此您可能想要盡可能將地理圍欄合併為較少的集合，以減少地理圍欄評估的成本。

根據預設，每次追蹤的裝置進入或退出連結的地理圍欄時，您都會收到 EventBridge 事件。如需詳細資訊，請參閱[將追蹤器連結至地理圍欄集合](associate-consumer.md)。

您可以為追蹤器資源的所有篩選位置更新啟用事件。如需詳細資訊，請參閱[啟用追蹤器的更新事件](location-events.md#enable-update-events)。

**注意**  
如果您想要使用自己的 AWS KMS 客戶受管金鑰加密資料，則邊界多邊形查詢功能預設為停用。這是因為使用此邊界多邊形查詢功能時，不會使用您的 AWS KMS 受管金鑰來加密裝置位置的表示。不過，確切的裝置位置仍會使用您的受管金鑰進行加密。  
您可以在建立或更新追蹤器時，將 `KmsKeyEnableGeospatialQueries` 參數設定為 true，以選擇加入週框多邊形查詢功能。

------
#### [ Console ]

**使用 Amazon Location 主控台建立追蹤器**

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location Service 主控台。

1. 在左側導覽窗格中，選擇**追蹤器**。

1. 選擇**建立追蹤器**。

1. 填寫下列欄位：
   + ****名稱 **** – 輸入唯一的名稱。例如 *ExampleTracker*。最多 100 個字元。有效項目包括英數字元、連字號、句點和底線。
   + ****描述** ** – 輸入選用的描述。

1. 在**位置篩選**下，選擇最符合您打算如何使用追蹤器資源的選項。如果您未設定**位置篩選**，則預設設定為 `TimeBased`。如需詳細資訊，請參閱本指南[Amazon Location Service 追蹤器](trackers.md)中的 和《Amazon Location Service Trackers API 參考`[PositionFiltering](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_CreateTracker.html#location-WaypointTracking_CreateTracker-request-PositionFiltering)`》中的 。

1. (選用) 在 **Tags (標籤)** 底下，輸入標籤 **Key (金鑰)** 與 **Value (值)**。這會新增標籤您的新地理圍欄集合。如需詳細資訊，請參閱[如何使用標籤](manage-resources.md#manage-resources_how-to)。

1. （選用） 在**客戶受管金鑰加密**下，您可以選擇**新增客戶受管金鑰**。這會新增您透過預設 AWS 擁有的加密建立、擁有和管理的對稱客戶受管金鑰。如需詳細資訊，請參閱[加密靜態資料](encryption-at-rest.md)。

1. （選用） 在 **KmsKeyEnableGeospatialQueries** 下，您可以選擇啟用**地理空間查詢**。這可讓您使用邊界多邊形查詢功能，同時使用客戶 AWS KMS 受管金鑰加密資料。
**注意**  
當您使用週框多邊形查詢功能時，不會使用 AWS KMS 受管金鑰來加密裝置位置的表示。不過，確切的裝置位置仍會使用您的受管金鑰進行加密。

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

1. 選擇**建立追蹤器**。

------
#### [ API ]

**使用 Amazon Location APIs 建立追蹤器**

從 Amazon Location Trackers APIs使用 `[CreateTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_CreateTracker.html)`操作。

下列範例使用 API 請求來建立名為 *ExampleTracker* 的追蹤器。追蹤器資源與客戶[受管 AWS KMS 金鑰相關聯，以加密客戶資料](encryption-at-rest.md)，而且不會在 [ EventBridge 中啟用位置更新](location-events.md#enable-update-events)。

```
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 受管金鑰加密資料。

如需使用週框多邊形查詢功能的資訊，請參閱 [列出您的裝置位置](list-device-positions.md)

**注意**  
當您使用週框多邊形查詢功能時，不會使用 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](https://docs.aws.amazon.com/cli/latest/reference/location/create-tracker.html)` 命令。

下列範例使用 AWS CLI 建立稱為 *ExampleTracker* 的追蹤器。追蹤器資源與客戶[受管 AWS KMS 金鑰相關聯，以加密客戶資料](encryption-at-rest.md)，且不會在 [ EventBridge 中啟用位置更新](location-events.md#enable-update-events)。

```
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 受管金鑰加密資料。

如需使用週框多邊形查詢功能的資訊，請參閱 [列出您的裝置位置](list-device-positions.md)

**注意**  
當您使用週框多邊形查詢功能時，不會使用 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 定價](https://aws.amazon.com/location/pricing/)。

在建立追蹤器之後，您可以選擇編輯**追蹤器來編輯****描述**、**位置篩選**和 **EventBridge 組態**。

# 驗證您的請求
<a name="tracking-identity-pool"></a>

建立追蹤器資源並準備好開始根據地理圍欄評估裝置位置後，請選擇驗證請求的方式：
+ 若要探索您可以存取 服務的方式，請參閱 [使用 Amazon Location Service 驗證](access.md)。
+ 如果您想要發佈具有未驗證請求的裝置位置，建議您使用 Amazon Cognito。

  **範例**

  下列範例顯示使用 Amazon Cognito 身分集區進行授權、使用 [AWS JavaScript SDK v3](https://aws.amazon.com/sdk-for-javascript/) 和 Amazon Location [Web](how-to-auth-helper.md#loc-sdk-auth-web)。

  ```
  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);
  ```

# 使用裝置位置更新追蹤器
<a name="send-location-updates"></a>

若要追蹤裝置，您可以將裝置位置更新發佈至追蹤器。您稍後可以從追蹤器資源擷取這些裝置位置或裝置位置歷史記錄。

每個位置更新都必須包含裝置 ID、時間戳記 和位置。您可以選擇性地包含其他中繼資料，包括準確性和最多 3 個金鑰/值對供您自己使用。

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

**注意**  
如需位置篩選的詳細資訊，請參閱 [建立追蹤器](start-create-tracker.md)。  
如需地理圍欄事件的詳細資訊，請參閱 [使用 Amazon EventBridge 對 Amazon Location Service 事件做出反應](location-events.md)。

使用下列其中一種方法來傳送裝置更新：
+ [將 MQTT 更新](tracking-using-mqtt.md)傳送至 AWS IoT Core 資源，並將其連結至您的追蹤器資源。
+ 使用 或 Amazon Location API，使用 Amazon Location Trackers APIs AWS CLI傳送位置更新。您可以使用 [AWS SDKs](dev-sdks.md) 從 iOS 或 Android 應用程式呼叫 APIs。

------
#### [ API ]

**使用 Amazon Location APIs 傳送位置更新**

從 Amazon Location Trackers APIs使用 `[BatchUpdateDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_BatchUpdateDevicePosition.html)`操作。

下列範例使用 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](https://docs.aws.amazon.com/cli/latest/reference/location/batch-update-device-position.html)` 命令。

下列範例使用 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"}}]'
```

------

# 從追蹤器取得裝置的位置歷史記錄
<a name="get-location-history"></a>

 您的 Amazon Location 追蹤器資源會維護所有追蹤裝置的位置歷史記錄 30 天。您可以從追蹤器資源擷取裝置位置歷史記錄，包括所有相關中繼資料。下列範例使用 AWS CLI或 Amazon Location APIs。

------
#### [ API ]

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

從 Amazon Location Trackers APIs使用 `[GetDevicePositionHistory](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_GetDevicePositionHistory.html)`操作。

下列範例使用 API URI 請求，從名為 *ExampleTracker* 的追蹤器取得 *ExampleDevice* 的裝置位置歷史記錄，從 `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](https://docs.aws.amazon.com/cli/latest/reference/location/get-device-position-history.html)` 命令。

下列範例使用 從名為 *ExampleTracker* 的追蹤器 AWS CLI 取得 *ExampleDevice* 的裝置位置歷史記錄，從 `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"
```

------

# 列出您的裝置位置
<a name="list-device-positions"></a>

您可以使用 AWS CLI或 Amazon Location APIs 搭配 ListDevicePositions API 檢視追蹤器的清單裝置位置。當您呼叫 ListDevicePositions API 時，會傳回與指定追蹤器關聯之所有裝置的最新位置清單。根據預設，此 API 會傳回指定追蹤器每頁結果的 100 個最新裝置位置。若要只傳回特定區域內的裝置，請使用 `FilterGeometry` 參數來建立邊界多邊形查詢。這樣當您呼叫 ListDevicePositions 時，只會傳回多邊形內的裝置。

**注意**  
如果您想要使用自己的 AWS KMS 客戶受管金鑰加密資料，則邊界多邊形查詢功能預設為停用。這是因為使用此功能時，不會使用您的 AWS KMS 受管金鑰來加密裝置位置的表示。不過，確切的裝置位置； 仍會使用您的受管金鑰加密。  
您可以選擇加入邊界多邊形查詢功能。方法是在建立或更新追蹤器時，將 `KmsKeyEnableGeospatialQueries` 參數設定為 true。

------
#### [ API ]

從 Amazon Location Trackers APIs使用 `[ListDevicePositions](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListDevicePositions.html)`操作。

下列範例是使用選用參數 取得多邊形區域中裝置位置清單的 API 請求`[FilterGeometry](https://docs.aws.amazon.com/)`。此範例會傳回`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](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListDevicePositions.html)`：

```
{
    "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](https://docs.aws.amazon.com/cli/latest/reference/location/list-trackers.html)` 命令。

下列範例是 AWS CLI ，以取得多邊形區域中的裝置清單。

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

------

# 如何使用 Amazon Location Service 追蹤器
<a name="tracker-how-to"></a>

本節提供使用 Amazon Location 追蹤器的說明。了解如何驗證裝置位置、將追蹤器連結至地理圍欄集合，以及使用 AWS IoT 和 MQTT 追蹤位置。此外，了解如何有效管理您的追蹤器，以支援以位置為基礎的應用程式，並確保準確、即時的追蹤。

**Topics**
+ [驗證裝置位置](verify-device-positions.md)
+ [將追蹤器連結至地理圍欄集合](associate-consumer.md)
+ [搭配 Amazon Location Service 使用 AWS IoT 和 MQTT 進行追蹤](tracking-using-mqtt.md)
+ [管理您的 Amazon Location Service 追蹤器](managing-trackers.md)

# 驗證裝置位置
<a name="verify-device-positions"></a>

若要檢查裝置位置的完整性，請使用 [VerifyDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_VerifyDevicePosition.html) API。此 API 透過評估裝置儲存格訊號、Wi-Fi 存取點、Ipv4 地址等屬性，以及是否使用代理，傳回裝置位置完整性的相關資訊。

## 先決條件
<a name="verify-device-positions-pre-reqs"></a>

在能夠使用列出的 APIs進行裝置驗證之前，請確定您有下列先決條件：
+ 您已為要檢查的裝置建立追蹤器。如需詳細資訊，請參閱[開始使用 Amazon Location Service 追蹤器](start-tracking.md)。

下列範例顯示 Amazon Location [VerifyDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_VerifyDevicePosition.html) API 的請求。

------
#### [ API ]

**使用 Amazon Location APIs裝置位置**

使用 Amazon Location Tracking APIs中的 `[VerifyDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_VerifyDevicePosition.html)`操作。

下列範例顯示評估裝置位置完整性的 API 請求。以您自己的裝置 IDs 取代這些值。

```
POST /tracking/v0/trackers/TrackerName/positions/verify HTTP/1.1
Content-type: application/json

{
   "DeviceState": { 
      "Accuracy": { 
         "Horizontal": number
      },
      "CellSignals": { 
         "LteCellDetails": [ 
            { 
               "CellId": number,
               "LocalId": { 
                  "Earfcn": number,
                  "Pci": number
               },
               "Mcc": number,
               "Mnc": number,
               "NetworkMeasurements": [ 
                  { 
                     "CellId": number,
                     "Earfcn": number,
                     "Pci": number,
                     "Rsrp": number,
                     "Rsrq": number
                  }
               ],
               "NrCapable": boolean,
               "Rsrp": number,
               "Rsrq": number,
               "Tac": number,
               "TimingAdvance": number
            }
         ]
      },
      "DeviceId": "ExampleDevice",
      "Ipv4Address": "string",
      "Position": [ number ],
      "SampleTime": "string",
      "WiFiAccessPoints": [ 
         { 
            "MacAddress": "string",
            "Rss": number
         }
      ]
   },
   "DistanceUnit": "string"
}
```

------

**注意**  
Integrity **SDK** 提供與裝置驗證相關的增強功能，並可依請求使用。若要存取開發套件，請聯絡 [銷售支援](https://aws.amazon.com/contact-us/sales-support/?pg=locationprice&cta=herobtn)。

# 將追蹤器連結至地理圍欄集合
<a name="associate-consumer"></a>

現在您已擁有地理圍欄集合和追蹤器，您可以將它們連結在一起，以便根據所有地理圍欄自動評估位置更新。如果您不想評估所有位置更新，或者，如果您沒有將一些位置儲存在追蹤器資源中，您可以[根據隨需的地理位置評估裝置位置](https://docs.aws.amazon.com/location/latest/developerguide/evaluate-geofences.html)。

根據地理圍欄評估裝置位置時，會產生事件。您可以將 動作設定為這些事件。如需您可以為地理圍欄事件設定之動作的詳細資訊，請參閱[使用 Amazon EventBridge 對 Amazon Location Service 事件做出反應](https://docs.aws.amazon.com/location/latest/developerguide/location-events.html)。

Amazon Location 事件包含產生它的裝置位置更新屬性，以及輸入或結束的地理圍欄的一些屬性。如需地理圍欄事件中包含之資料的詳細資訊，請參閱 [Amazon Location Service 的 Amazon EventBridge 事件範例](location-events.md#example-event)。

下列範例使用主控台 AWS CLI、 或 Amazon Location APIs 將追蹤器資源連結至地理圍欄集合。

------
#### [ Console ]

**使用 Amazon Location Service 主控台將追蹤器資源連結至地理圍欄集合**

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location Service 主控台。

1. 在左側導覽窗格中，選擇**追蹤器**。

1. 在**裝置追蹤器**下，選取目標追蹤器的名稱連結。

1. 在**連結的地理圍欄集合**下，選擇**連結地理圍欄集合**。

1. 在**連結的地理圍欄集合**視窗中，從下拉式功能表中選取地理圍欄集合。

1. 選擇 **Link (連結)**。

連結追蹤器資源後，會為其指派**作用中**狀態。

------
#### [ API ]

**使用 Amazon Location APIs 將追蹤器資源連結至地理圍欄集合**

從 Amazon Location Trackers APIs使用 `[AsssociateTrackerConsumer](https://docs.aws.amazon.com/location-trackers/latest/APIReference/API_AssociateTrackerConsumer.html)`操作。

下列範例使用 API 請求，該請求使用其 [Amazon Resource Name ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)(ARN) 將 *ExampleTracker* 與地理圍欄集合建立關聯。

```
POST /tracking/v0/trackers/ExampleTracker/consumers
Content-type: application/json

{
   "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/ExampleGeofenceCollection"
}
```

------
#### [ AWS CLI ]

**使用 AWS CLI 命令將追蹤器資源連結至地理圍欄集合**

使用 `[associate-tracker-consumer](https://docs.aws.amazon.com/cli/latest/reference/location/associate-tracker-consumer.html)` 命令。

下列範例使用 AWS CLI 建立名為 *ExampleGeofenceCollection* 的地理圍欄集合。

```
aws location \
    associate-tracker-consumer \
        --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/ExampleGeofenceCollection" \
        --tracker-name "ExampleTracker"
```

------

# 搭配 Amazon Location Service 使用 AWS IoT 和 MQTT 進行追蹤
<a name="tracking-using-mqtt"></a>

[MQTT](http://mqtt.org/) 是一種輕量型且廣泛採用的訊息通訊協定，專為受限的裝置而設計。 AWS IoT Core 支援使用 MQTT 通訊協定和 MQTT over WebSocket Secure (WSS) 通訊協定的裝置連線。

[AWS IoT Core](https://aws.amazon.com/iot-core/) 會將裝置 AWS 連線至 ，並可讓您在裝置之間傳送和接收訊息。 AWS IoT Core 規則引擎會儲存有關裝置訊息主題的查詢，並可讓您定義將訊息傳送至其他服務的動作 AWS ，例如 Amazon Location Service。知道其位置做為座標的裝置，可以透過規則引擎將其位置轉送至 Amazon Location。

**注意**  
裝置可能知道自己的位置，例如透過內建 GPS。 AWS IoT 也支援第三方裝置位置追蹤。如需詳細資訊，請參閱《 [AWS IoT 核心開發人員指南》中的核心裝置位置](https://docs.aws.amazon.com/iot/latest/developerguide/device-location.html)。 *AWS IoT *

下列逐步解說說明使用 AWS IoT Core 規則進行追蹤。如果您需要在傳送至 Amazon Location 之前處理裝置資訊，您也可以將裝置資訊傳送至自己的 AWS Lambda 函數。如需使用 Lambda 處理裝置位置的詳細資訊，請參閱 [AWS Lambda 搭配 MQTT 使用](tracking-using-mqtt-with-lambda.md)。

**Topics**
+ [先決條件](#mqtt-prerequisite)
+ [建立 AWS IoT Core 規則](#mqtt-create-iot-rule)
+ [在主控台中測試您的 AWS IoT Core 規則](#mqtt-test-iot-rule)
+ [AWS Lambda 搭配 MQTT 使用](tracking-using-mqtt-with-lambda.md)

## 先決條件
<a name="mqtt-prerequisite"></a>

您必須先完成下列先決條件，才能開始追蹤：
+ [建立您將傳送裝置位置資料的追蹤器資源](start-create-tracker.md)。
+ [建立 IAM 角色](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html)以授予追蹤器的 AWS IoT Core 存取權。

  遵循這些步驟時，請使用下列政策來授予追蹤器的存取權：

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "WriteDevicePosition",
        "Effect": "Allow",
        "Action": "geo:BatchUpdateDevicePosition",
        "Resource": "arn:aws:geo:*:*:tracker/*"
      }
    ]
  }
  ```

## 建立 AWS IoT Core 規則
<a name="mqtt-create-iot-rule"></a>

接著，建立 AWS IoT Core 規則，將裝置的位置遙測轉送至 Amazon Location Service。如需建立規則的詳細資訊，請參閱《 *AWS IoT Core 開發人員指南*》中的下列主題：
+ [建立 AWS IoT 規則](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-rule.html)以取得建立新規則的相關資訊。
+ 建立規則以發佈至 Amazon Location 的特定資訊[的位置動作](https://docs.aws.amazon.com/iot/latest/developerguide/location-rule-action.html) 

## 在主控台中測試您的 AWS IoT Core 規則
<a name="mqtt-test-iot-rule"></a>

如果目前沒有裝置發佈包含位置的遙測，您可以使用 AWS IoT Core 主控台測試規則。主控台具有測試用戶端，您可以在其中發佈範例訊息，以驗證解決方案的結果。

1. 在 https：//[https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/home) 登入 AWS IoT Core 主控台。

1. 在左側導覽中，展開**測試**，然後選擇 **MQTT 測試用戶端**。

1. 在**發佈至主題**下，將**主題名稱**設定為 *iot/topic* （或您在 AWS IoT Core 規則中設定的主題名稱，如果不同），並為**訊息承載**提供以下內容。將時間戳記 *1604940328* 取代為過去 30 天內的有效時間戳記 (Amazon Location Service 追蹤器會忽略任何超過 30 天的時間戳記）。

   ```
   {
     "payload": {
       "deviceid": "thing123",
       "timestamp": 1604940328,
       "location": { "lat": 49.2819, "long": -123.1187 },
       "accuracy": { "Horizontal": 20.5 },
       "positionProperties": { "field1": "value1", "field2": "value2" }
     }
   }
   ```

1. 選擇**發佈**至主題以傳送測試訊息。

1. 若要驗證 Amazon Location Service 已收到訊息，請使用下列 AWS CLI 命令。如果您在設定期間修改它，請將追蹤器名稱取代為您使用的名稱。

   ```
   aws location batch-get-device-position --tracker-name MyTracker --device-ids thing123
   ```

# AWS Lambda 搭配 MQTT 使用
<a name="tracking-using-mqtt-with-lambda"></a>

雖然傳送裝置位置資料至 Amazon Location 進行追蹤時 AWS Lambda 不再需要使用 ，但在某些情況下，您可能仍想使用 Lambda。例如，如果您想要先自行處理裝置位置資料，再將其傳送至 Amazon Location。下列主題說明如何在將訊息傳送到追蹤器之前，使用 Lambda 來處理訊息。如需此模式的詳細資訊，請參閱[參考架構](https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/amazon-location-service-ra.pdf)。

**Topics**
+ [先決條件](#mqtt-prerequisite-with-lambda)
+ [建立 Lambda 函式](#mqtt-with-lambda-create-lambda)
+ [建立 AWS IoT Core 規則](#mqtt-create-iot-rule-with-lambda)
+ [在主控台中測試您的 AWS IoT Core 規則](#mqtt-test-iot-rule-with-lambda)

## 先決條件
<a name="mqtt-prerequisite-with-lambda"></a>

您必須先[建立追蹤器資源](start-tracking.md)，才能開始追蹤。若要建立追蹤器資源，您可以使用 Amazon Location 主控台 AWS CLI、 或 Amazon Location APIs。

下列範例使用 Amazon Location Service 主控台來建立追蹤器資源：

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location Service 主控台。

1. 在左側導覽窗格中，選擇**追蹤器**。

1.  選擇**建立追蹤器**。

1. 填寫下列方塊：
   + **名稱** – 輸入最多 100 個字元的唯一名稱。有效項目包括英數字元、連字號和底線。例如，*MyTracker*。
   + **描述** – 輸入選用的描述。例如，用於*存放 AWS IoT Core 裝置位置的追蹤器*。
   + **位置篩選** – 選取您要用於位置更新的篩選。例如，**準確性型篩選**。

1. 選擇**建立追蹤器**。

## 建立 Lambda 函式
<a name="mqtt-with-lambda-create-lambda"></a>

若要在 AWS IoT Core 和 Amazon Location Service 之間建立連線，您需要 AWS Lambda 函數來處理轉送的訊息 AWS IoT Core。此函數會擷取任何位置資料、將其格式化為 Amazon Location Service，並透過 Amazon Location Tracker API 提交資料。您可以透過 AWS Lambda 主控台建立此函數，也可以使用 AWS Command Line Interface (AWS CLI) 或 AWS Lambda APIs。

若要建立使用主控台將位置更新發佈至 Amazon Location 的 Lambda 函數：

1. 在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/home) 開啟 AWS Lambda 主控台。

1. 從左側導覽中，選擇**函數**。

1.  選擇**建立函數**，並確定已選取**從頭開始撰寫**。

1. 填寫下列方塊：
   + **函數名稱** – 輸入函數的唯一名稱。有效項目包括英數字元、連字號和底線，不含空格。例如，*MyLambda*。
   + **執行時間** – 選擇 *Python 3.8。*

1. 選擇**建立函數**。

1. 選擇**程式碼**索引標籤以開啟編輯器。

1. `lambda_function.py` 使用下列項目覆寫 中的預留位置代碼，將指派給 的值取代為您建立為[先決條件](#mqtt-prerequisite-with-lambda)的追蹤器`TRACKER_NAME`名稱。

   ```
   from datetime import datetime
   import json
   import os
   
   import boto3
   
   # Update this to match the name of your Tracker resource
   TRACKER_NAME = "MyTracker"
   
   """
   This Lambda function receives a payload from AWS IoT Core and publishes device updates to 
   Amazon Location Service via the BatchUpdateDevicePosition API.
   
   Parameter 'event' is the payload delivered from AWS IoT Core.
   
   In this sample, we assume that the payload has a single top-level key 'payload' and a nested key
   'location' with keys 'lat' and 'long'. We also assume that the name of the device is nested in
   the payload as 'deviceid'. Finally, the timestamp of the payload is present as 'timestamp'. For
   example:
   
   >>> event
   { 'payload': { 'deviceid': 'thing123', 'timestamp': 1604940328,
     'location': { 'lat': 49.2819, 'long': -123.1187 },
     'accuracy': {'Horizontal': 20.5 },
     'positionProperties': {'field1':'value1','field2':'value2'} }
   }
   
   If your data doesn't match this schema, you can either use the AWS IoT Core rules engine to
   format the data before delivering it to this Lambda function, or you can modify the code below to
   match it.
   """
   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)
     }
   ```

1. 選擇**部署**以儲存更新的函數。

1. 選擇 **Configuration** (組態) 索引標籤。

1. 在**許可**區段中，選擇超連結的角色名稱，將 Amazon Location Service 許可授予 Lambda 函數。

1. 從角色的**摘要**頁面，選擇**新增許可**，然後從下拉式清單中選擇**建立內嵌政策**。

1. 選擇 **JSON** 索引標籤，並使用下列文件覆寫政策。這可讓您的 Lambda 函數更新所有區域中所有追蹤器資源管理的裝置位置。

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "WriteDevicePosition",
         "Effect": "Allow",
         "Action": "geo:BatchUpdateDevicePosition",
         "Resource": "arn:aws:geo:*:*:tracker/*"
       }
     ]
   }
   ```

1. 選擇**檢閱政策**。

1. 輸入政策名稱。例如，*AmazonLocationTrackerWriteOnly*。

1. 選擇**建立政策**。

您可以視需要修改此函數程式碼，以適應您自己的裝置訊息結構描述。

## 建立 AWS IoT Core 規則
<a name="mqtt-create-iot-rule-with-lambda"></a>

接著，建立 AWS IoT Core 規則，將裝置的位置遙測轉送至 AWS Lambda 函數，以進行轉換並發佈至 Amazon Location Service。提供的範例規則假設裝置承載的任何必要轉換都由 Lambda 函數處理。您可以透過 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS IoT Core APIs建立此規則 AWS IoT Core 。

**注意**  
雖然 AWS IoT 主控台會處理允許 AWS IoT Core 叫用 Lambda 函數所需的許可，但如果您要從 AWS CLI 或 SDK 建立規則，則必須[設定政策以授予 許可 AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/lambda-rule-action.html#lambda-rule-action-requirements)。

** AWS IoT Core 使用主控台建立**

1. 在 https：//[https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/home) 登入 AWS IoT Core 主控台。

1. 在左側導覽中，展開**動作**，然後選擇**規則**。

1. 選擇**建立規則**以啟動新的規則精靈。

1. 輸入規則的名稱和說明。

1. 針對**規則查詢陳述**式，更新 `FROM` 屬性以參考至少有一個裝置正在發佈包含位置之遙測的主題。如果您正在測試解決方案，則不需要修改。

   ```
   SELECT * FROM 'iot/topic'
   ```

1. 在**設定一或多個動作 **下，選擇**新增動作**。

1. 選取**傳送訊息至 lambda 函數**。

1. 選擇 **Configure action (設定動作)**。

1. 從清單中尋找並選取您的 Lambda 函數。

1. 選擇**新增動作**。

1. 選擇**建立規則**。

## 在主控台中測試您的 AWS IoT Core 規則
<a name="mqtt-test-iot-rule-with-lambda"></a>

如果目前沒有裝置發佈包含位置的遙測，您可以使用 AWS IoT Core 主控台測試您的規則和此解決方案。主控台具有測試用戶端，您可以在其中發佈範例訊息，以驗證解決方案的結果。

1. 在 https：//[https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/home) 登入 AWS IoT Core 主控台。

1. 在左側導覽中，展開**測試**，然後選擇 **MQTT 測試用戶端**。

1. 在**發佈至主題**下，將**主題名稱**設定為 *iot/topic* （或您在 AWS IoT Core 規則中設定的主題名稱，如果不同），並為**訊息承載**提供以下內容。將時間戳記 *1604940328* 取代為過去 30 天內的有效時間戳記 （忽略任何超過 30 天的時間戳記）。

   ```
   {
     "payload": {
       "deviceid": "thing123",
       "timestamp": 1604940328,
       "location": { "lat": 49.2819, "long": -123.1187 },
       "accuracy": { "Horizontal": 20.5 },
       "positionProperties": { "field1": "value1", "field2": "value2" }
     }
   }
   ```

1. 選擇**發佈**至主題以傳送測試訊息。

1. 若要驗證 Amazon Location Service 已收到訊息，請使用下列 AWS CLI 命令。如果您在設定期間修改它們，請將追蹤器名稱和裝置 ID 取代為您使用的名稱和裝置 ID。

   ```
   aws location batch-get-device-position --tracker-name MyTracker --device-ids thing123
   ```

# 管理您的 Amazon Location Service 追蹤器
<a name="managing-trackers"></a>

您可以使用 Amazon Location 主控台、 AWS CLI或 Amazon Location APIs 來管理追蹤器。

## 列出您的追蹤器
<a name="viewing-trackers"></a>

您可以使用 Amazon Location 主控台 AWS CLI、 或 Amazon Location APIs 來檢視追蹤器清單：

------
#### [ Console ]

**使用 Amazon Location 主控台檢視現有追蹤器的清單**

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location 主控台。

1. 從左側導覽中選擇**追蹤器**。

1. 在我的追蹤器下**檢視您的追蹤器**資源清單。

------
#### [ API ]

從 Amazon Location Trackers APIs使用 `[ListTrackers](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListTrackers.html)`操作。

下列範例是取得您 AWS 帳戶中追蹤器清單的 API 請求。

```
POST /tracking/v0/list-trackers
```

以下是 的範例回應`[ListTrackers](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListTrackers.html)`：

```
{
   "Entries": [ 
      { 
         "CreateTime": 2020-10-02T19:09:07.327Z,
         "Description": "string",
         "TrackerName": "ExampleTracker",
         "UpdateTime": 2020-10-02T19:10:07.327Z
      }
   ],
   "NextToken": "1234-5678-9012"
}
```

------
#### [ CLI ]

使用 `[list-trackers](https://docs.aws.amazon.com/cli/latest/reference/location/list-trackers.html)` 命令。

下列範例是 AWS CLI ，以取得您 AWS 帳戶中的追蹤器清單。

```
aws location list-trackers
```

------

## 中斷追蹤器與地理圍欄集合的連線
<a name="disassociate-tracker"></a>

您可以使用 Amazon Location 主控台、 或 Amazon Location APIs AWS CLI，中斷追蹤器與地理圍欄集合的連線：

------
#### [ Console ]

**使用 Amazon Location 主控台取消追蹤器與相關聯地理圍欄集合的關聯**

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location 主控台。

1. 從左側導覽窗格中選擇**追蹤器**。

1. 在**我的追蹤器**下，選取目標追蹤器的名稱連結。

1. 在**連結的地理圍欄集合**下，選取具有**連結**狀態的地理圍欄集合。

1. 選擇**取消連結**。

------
#### [ API ]

從 Amazon Location Trackers APIs使用 `[DisassociateTrackerConsumer](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DisassociateTrackerConsumer.html)`操作。

下列範例是將追蹤器與相關聯的地理圍欄集合取消關聯的 API 請求。

```
DELETE /tracking/v0/trackers/ExampleTracker/consumers/arn:aws:geo:us-west-2:123456789012:geofence-collection/ExampleCollection
```

以下是 的範例回應`[DisassociateTrackerConsumer](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DisassociateTrackerConsumer.html)`：

```
HTTP/1.1 200
```

------
#### [ CLI ]

使用 `[disassociate-tracker-consumer](https://docs.aws.amazon.com/cli/latest/reference/location/disassociate-tracker-consumer.html)` 命令。

下列範例是 AWS CLI 命令，可將追蹤器與相關聯的地理圍欄集合取消關聯。

```
aws location disassociate-tracker-consumer \
    --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/ExampleCollection" \
    --tracker-name "ExampleTracker"
```

------

## 取得追蹤器詳細資訊
<a name="get-tracker-details"></a>

您可以使用 Amazon Location 主控台、 或 Amazon Location APIs AWS CLI，取得您 AWS 帳戶中任何追蹤器的詳細資訊。

------
#### [ Console ]

**使用 Amazon Location 主控台檢視追蹤器詳細資訊**

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location 主控台。

1. 從左側導覽中選擇**追蹤器**。

1. 在**我的追蹤器**下，選取目標追蹤器的名稱連結。

1. 在**資訊**下檢視追蹤器詳細資訊。

------
#### [ API ]

從 Amazon Location Tracker APIs使用 `[DescribeTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DescribeTracker.html)`操作。

下列範例是取得 *ExampleTracker* 追蹤器詳細資訊的 API 請求。

```
GET /tracking/v0/trackers/ExampleTracker
```

以下是 的範例回應`[DescribeTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DescribeTracker.html)`：

```
{
   "CreateTime": 2020-10-02T19:09:07.327Z,
   "Description": "string",
   "EventBridgeEnabled": false,
   "KmsKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
   "PositionFiltering": "TimeBased",
   "Tags": { 
      "Tag1" : "Value1" 
   },
   "TrackerArn": "arn:aws:geo:us-west-2:123456789012:tracker/ExampleTracker",
   "TrackerName": "ExampleTracker",
   "UpdateTime": 2020-10-02T19:10:07.327Z
}
```

------
#### [ CLI ]

使用 `[describe-tracker](https://docs.aws.amazon.com/cli/latest/reference/location/describe-tracker.html)` 命令。

下列範例是取得 *ExampleTracker* 追蹤器詳細資訊的 AWS CLI 命令。

```
aws location describe-tracker \
    --tracker-name "ExampleTracker"
```

------

## 刪除追蹤器
<a name="delete-tracker"></a>

您可以使用 Amazon Location 主控台、 AWS CLI或 Amazon Location APIs，從 AWS 您的帳戶刪除追蹤器：

------
#### [ Console ]

**使用 Amazon Location 主控台刪除現有的地圖資源**

**警告**  
此操作會永久刪除資源。如果追蹤器資源正在使用中，您可能會遇到錯誤。請確定目標資源不是應用程式的相依性。

1. 開啟位於 https：//[https://console.aws.amazon.com/location/](https://console.aws.amazon.com/location/home) 的 Amazon Location 主控台。

1. 從左側導覽窗格中選擇**追蹤器**。

1. 在**我的追蹤器**下，選取目標追蹤器。

1. 選擇**刪除追蹤器**。

------
#### [ API ]

從 Amazon Location Tracker APIs使用 `[DeleteTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DeleteTracker.html)`操作。

下列範例是刪除追蹤器 *ExampleTracker* 的 API 請求。

```
DELETE /tracking/v0/trackers/ExampleTracker
```

以下是 的回應範例`[DeleteTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DeleteTracker.html)`：

```
HTTP/1.1 200
```

------
#### [ CLI ]

使用 `[delete-tracker](https://docs.aws.amazon.com/cli/latest/reference/location/delete-tracker.html)` 命令。

下列範例是刪除追蹤器 *ExampleTracker* 的 AWS CLI 命令。

```
aws location delete-tracker \
    --tracker-name "ExampleTracker"
```

------

# 管理成本和用量
<a name="trackers-next-steps"></a>

當您繼續了解 Amazon Location 追蹤器時，請務必了解如何管理服務容量、確保遵循用量限制，並透過配額和 API 最佳化獲得最佳結果。透過套用效能和準確性的最佳實務，您可以自訂應用程式以有效率地處理位置相關查詢，並最大化您的 API 請求。

**Topics**
+ [追蹤器定價](trackers-pricing.md)
+ [追蹤器配額和用量](trackers-quotas.md)

# 追蹤器定價
<a name="trackers-pricing"></a>

如需追蹤和地理驗證 APIs 的定價資訊，請參閱 [Amazon Location Service 定價頁面](https://aws.amazon.com/location/pricing/)。

**寫入的位置**

您可以使用 `BatchUpdateDevicePosition` 將一或多個裝置的位置更新資料上傳至追蹤器資源 （每個批次最多十個裝置）。價格是根據 API 請求中的裝置位置數量而定。每個裝置位置更新的單價是根據每月總用量。如需單價和磁碟區方案的詳細資訊，請參閱 [Amazon Location Service 定價頁面](https://aws.amazon.com/location/pricing/)。

您可以從追蹤裝置設定裝置位置更新頻率 （也稱為 ping 速率），並選擇性地使用本機篩選條件僅將相關的裝置位置更新上傳至 Amazon Location Service，以最佳化您的位置撰寫成本。

**位置讀取**

您可以使用 `BatchGetDevicePosition` 列出請求裝置的最新裝置位置，每個請求最多 100 個裝置。您也可以使用 根據裝置的範例時間`GetDevicePosition`來擷取裝置的最新位置。

價格是以 API 請求的數量為基礎。

**位置刪除**

您可以使用 從追蹤器資源`BatchDeleteDevicePositionHistory`中刪除一或多個裝置的位置歷史記錄，每個請求最多 100 個裝置。

價格是根據 API 請求中的裝置數量而定。

**位置完整性評估**

您可以使用 `VerifyDevicePosition`來驗證裝置位置的完整性，方法是判斷是否在代理之後回報，以及將其與根據裝置狀態估計的推斷位置進行比較。

價格是以 API 請求的數量為基礎。

# 追蹤器配額和用量
<a name="trackers-quotas"></a>

本主題提供 Amazon Location Service 追蹤器的速率限制和配額摘要。

**注意**  
如果您需要較高的配額，您可以使用 Service Quotas 主控台來[請求增加配額](https://console.aws.amazon.com/servicequotas/home#!/services/geo/quotas)以增加可調整的配額。請求增加配額時，請選取您需要增加配額的區域，因為大多數配額都專屬於該 AWS 區域。您最多可以請求每個 API 預設限制的兩倍。  
對於超過預設限制兩倍的請求，您的請求將提交支援票證。您也可以連線到您的高級支援團隊。配額增加請求不會產生直接費用，但較高的用量層級可能會根據使用的額外資源而增加服務成本。如需詳細資訊，請參閱[使用 Service Quotas 管理配額](manage-quotas.md)。

Service Quotas 是每個 AWS 帳戶和 AWS 區域可以擁有的資源數量上限。Amazon Location Service 拒絕超出服務配額的其他請求。

## Resources
<a name="tracker-quota-resources"></a>


| API 名稱 | 預設 | 最大可調整限制 | 
| --- | --- | --- | 
|  每個帳戶的追蹤器資源  |  500  |  1000 如果您需要更多，請[請求增加配額](https://console.aws.amazon.com/servicequotas/home#!/services/geo/quotas)或聯絡支援團隊。  | 
|  每個追蹤器的追蹤器取用者  |  5  |  最大可調整限制不適用。 請聯絡支援團隊。  | 

## CRUD API
<a name="tracker-quota-crud"></a>

**注意**  
如果您需要提高任何這些 APIs 的限制，[請提高配額](https://console.aws.amazon.com/servicequotas/home#!/services/geo/quotas)或聯絡支援團隊。


| API 名稱 | 預設 | 最大可調整限制 | 
| --- | --- | --- | 
|  [AssociateTrackerConsumer](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_AssociateTrackerConsumer.html)  |  10  |  20  | 
|  [CreateTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_CreateTracker.html)  |  10  |  20  | 
|  [DeleteTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DeleteTracker.html)  |  10  |  20  | 
|  [DescribeTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DescribeTracker.html)  |  10  |  20  | 
|  [DisassociateTrackerConsumer](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_DisassociateTrackerConsumer.html)  |  10  |  20  | 
|  [ListTrackerConsumers](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListTrackerConsumers.html)  |  10  |  20  | 
|  [ListTrackers](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListTrackers.html)  |  10  |  20  | 
|  [UpdateTracker](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_UpdateTracker.html)  |  10  |  20  | 

## Data API (資料 API)
<a name="tracker-quota-data"></a>

**注意**  
如果您需要提高任何這些 APIs 的限制，[請提高配額](https://console.aws.amazon.com/servicequotas/home#!/services/geo/quotas)或聯絡支援團隊。


| API 名稱 | 預設 | 最大可調整限制 | 
| --- | --- | --- | 
|  [BatchGetDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_BatchGetDevicePosition.html)  |  50  |  100  | 
|  [BatchUpdateDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_BatchUpdateDevicePosition.html)  |  50  |  100  | 
|  [GetDevicePosition](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_GetDevicePosition.html)  |  50  |  100  | 
|  [GetDevicePositionHistory](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_GetDevicePositionHistory.html)  |  50  |  100  | 
|  [BatchDeleteDevicePositionHistory](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_BatchDeleteDevicePositionHistory.html)  |  50  |  100  | 
|  [ListDevicePositions](https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointTracking_ListDevicePositions.html)  |  50  |  100  | 

## 其他用量限制
<a name="tracker-quota-other"></a>

