

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

# 搭配 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
   ```