

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

# 將裝置連接至 AWS IoT
<a name="iot-connect-devices"></a>

裝置透過 連線至 AWS IoT 和其他 服務 AWS IoT Core。透過 AWS IoT Core，裝置會使用您帳戶特定的裝置端點來傳送和接收訊息。[AWS IoT 裝置 SDKs](#iot-connect-device-sdks) 支援使用 MQTT 和 WSS 通訊協定的裝置通訊。如需裝置可使用之通訊協定的詳細資訊，請參閱 [裝置通訊協定](protocols.md)。

**訊息代理程式**  
AWS IoT 透過訊息代理程式管理裝置通訊。裝置和用戶端會將訊息發佈至訊息代理程式，並訂閱訊息代理程式發佈的訊息。訊息由應用程式定義的[*主題*](topics.md)識別。當訊息代理程式收到裝置或用戶端發佈的訊息時，會將該訊息重新發佈至已訂閱該訊息之主題的裝置和用戶端。訊息中介裝置也會轉送訊息到 AWS IoT [規則](iot-rules.md)引擎，該引擎可以對訊息的內容採取行動。

**AWS IoT 訊息安全性**  
 AWS IoT 要使用 [X.509 用戶端憑證](x509-client-certs.md)和[AWS 簽章 V4](https://docs.aws.amazon.com//general/latest/gr/signing_aws_api_requests.html) 進行身分驗證的裝置連線。裝置通訊由 TLS 1.3 版保護，並 AWS IoT 要求裝置在連線時傳送[伺服器名稱指示 (SNI) 延伸](https://tools.ietf.org/html/rfc3546#section-3.1)。如需詳細資訊，請參閱 [中的 Transport Security AWS IoT](transport-security.html)。

## AWS IoT 裝置資料和服務端點
<a name="iot-connect-device-endpoints"></a>

**重要**  
您可以在裝置中快取或儲存端點。這意味著您不需要在每次連接新裝置時查詢 `DescribeEndpoint` API。為您的帳戶 AWS IoT Core 建立端點之後，端點不會變更。

每個帳戶都有數個帳戶獨有的裝置端點，並支援特定的 IoT 功能。 AWS IoT 裝置資料端點支援專為 IoT 裝置通訊需求設計的發佈/訂閱通訊協定；不過，如果其他用戶端的應用程式需要這些端點提供的特殊功能，例如應用程式和服務，也可以使用此界面。 AWS IoT 裝置服務端點支援以裝置為中心的存取安全性和管理服務。

若要了解您帳戶的裝置資料端點，您可以在 AWS IoT Core 主控台[https://console.aws.amazon.com//iot/home#/settings](https://console.aws.amazon.com//iot/home#/settings)頁面中找到它。

若要了解您帳戶的裝置端點特定用途，包括裝置資料端點，請使用此處顯示的 **describe-endpoint** CLI 命令或 `DescribeEndpoint` REST API，並提供下表中的 `endpointType` 參數值。

```
aws iot describe-endpoint --endpoint-type endpointType
```

這個命令會傳回下列格式的 *iot-endpoint*：`account-specific-prefix.iot.aws-region.amazonaws.com`。

每個客戶都有一個 `iot:Data-ATS` 和一個 `iot:Data` 端點。每個端點都使用 X.509 憑證來驗證用戶端。強烈建議客戶使用較新的 `iot:Data-ATS` 端點類型，以避免與普遍不信任 Symantec 憑證授權單位相關的問題。我們為裝置提供 `iot:Data` 端點，以便從使用 VeriSign 憑證的舊端點擷取資料，藉此提供回溯相容性。如需詳細資訊，請參閱[伺服器身分驗證​](server-authentication.html)。


**AWS IoT 裝置端點**  

|  端點用途  |  `endpointType` 值  |  Description  | 
| --- | --- | --- | 
|  AWS IoT Core：資料平面操作  |  `iot:Data-ATS`  |  用來將資料傳送至訊息代理程式、[Device Shadow](iot-device-shadows.md) 和 AWS IoT的[規則引擎](iot-rules.md)元件，以及從中接收資料。 `iot:Data-ATS` 傳回 ATS 簽署的資料端點。  | 
| AWS IoT Core：資料平面操作 (舊式) |  `iot:Data`  | iot:Data 會傳回 VeriSign 簽署的資料端點，以提供回溯相容性。Symantec (iot:Data) 端點不支援 MQTT 5。 | 
|  AWS IoT Core 登入資料存取  |  `iot:CredentialProvider`  |  用於將裝置的內建 X.509 憑證交換為臨時憑證，以直接與其他 AWS 服務連線。如需連線至其他 AWS 服務的詳細資訊，請參閱[授權直接呼叫 AWS 服務](authorizing-direct-aws.md)。  | 
|  AWS IoT Device Management：任務資料操作  |  `iot:Jobs`  |  用來讓裝置使用 AWS IoT Jobs [Device HTTPS APIs 與 Jobs ](jobs-mqtt-api.md)服務互動。 `iot:Jobs` 僅適用於 IPv4。如果您使用的是雙堆疊端點 (IPv4 和 IPv6)，請使用 `iot:Data-ATS`端點類型。  | 
|  AWS IoT Device Advisor 操作  |  `iot:DeviceAdvisor`  |  用於使用 Device Advisor 測試裝置的測試端點類型。如需詳細資訊，請參閱[Device Advisor](device-advisor.md)。  | 
|  AWS IoT Core data beta （預覽）  |  `iot:Data-Beta`  |  保留給 測試版的端點類型。如需其目前使用方式的詳細資訊，請參閱 [網域組態](iot-custom-endpoints-configurable.md)。  | 

您也可以使用自己的完整網域名稱 (FQDN)，例如 *example.com*，以及相關聯的伺服器憑證， AWS IoT 使用 將裝置連線至 [網域組態](iot-custom-endpoints-configurable.md)。

## AWS IoT 裝置 SDKs
<a name="iot-connect-device-sdks"></a>

 AWS IoT 裝置SDKs可協助您將 IoT 裝置連線至 ， AWS IoT Core 並且支援透過 WSS 通訊協定的 MQTT 和 MQTT。

 AWS IoT 裝置SDKs與 AWS SDKs 不同之處在於 AWS IoT ，裝置SDKs支援 IoT 裝置的特殊通訊需求，但不支援所有受 AWS SDKs 支援的服務。 AWS IoT 裝置SDKs與支援所有 AWS 服務的 AWS SDKs 相容；不過，它們使用不同的身分驗證方法並連線到不同的端點，這可能會導致在 IoT 裝置上使用 AWS SDKs 變得不切實際。

**行動裝置**  
同時[AWS 行動SDKs](iot-connect-service.md#iot-connect-mobile-sdks)支援 MQTT 裝置通訊、部分 AWS IoT 服務 APIs，以及其他 服務的 APIs AWS 。如果您是在支援的行動裝置上進行開發，請檢閱其軟體開發套件，以確認這是否為開發 IoT 解決方案的最佳選擇。

------
#### [ C\$1\$1 ]

**AWS IoT C\$1\$1 裝置 SDK**

 AWS IoT C\$1\$1 裝置 SDK 可讓開發人員使用 AWS 和 AWS IoT Core 服務的 APIs來建置連線的應用程式。此 SDK 特別是為並未受限於資源的裝置所設計，需要訊佇列、多重執行緒支援、最新語言功能等進階功能。如需詳細資訊，請參閱下列內容：
+ [AWS IoT GitHub 上的裝置 SDK C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)
+ [AWS IoT 裝置 SDK C\$1\$1 v2 讀我檔案](https://github.com/aws/aws-iot-device-sdk-cpp-v2#aws-iot-device-sdk-for-c-v2)
+ [AWS IoT 裝置 SDK C\$1\$1 v2 範例](https://github.com/aws/aws-iot-device-sdk-cpp-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-for-c-v2)
+ [AWS IoT 裝置 SDK C\$1\$1 v2 API 文件](https://aws.github.io/aws-iot-device-sdk-cpp-v2/)

------
#### [ Python ]

**AWS IoT 適用於 Python 的裝置 SDK**

適用於 Python 的 AWS IoT 裝置 SDK 可讓開發人員撰寫 Python 指令碼，以使用其裝置透過 MQTT 或 MQTT 透過 WebSocket Secure (WSS) 通訊協定存取 AWS IoT 平台。透過將其裝置連接到 AWS IoT Core 服務的 APIs，使用者可以安全地使用訊息中介裝置、規則和 Device Shadow 服務，該服務 AWS IoT Core 提供 和 ，並搭配其他 AWS 服務，例如 AWS Lambda、Amazon Kinesis 和 Amazon S3 等。
+ [AWS IoT GitHub 上的適用於 Python v2 的裝置 SDK](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [AWS IoT 適用於 Python v2 的 裝置 SDK 讀我檔案](https://github.com/aws/aws-iot-device-sdk-python-v2#aws-iot-device-sdk-v2-for-python)
+ [AWS IoT 適用於 Python v2 的 裝置 SDK 範例](https://github.com/aws/aws-iot-device-sdk-python-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-v2-for-python)
+ [AWS IoT 適用於 Python v2 的 裝置 SDK API 文件](https://aws.github.io/aws-iot-device-sdk-python-v2/)

------
#### [ JavaScript ]

**AWS IoT 適用於 JavaScript 的裝置 SDK**

適用於 JavaScript 的 AWS IoT 裝置 SDK 可讓開發人員撰寫 JavaScript 應用程式，透過 WebSocket 通訊協定 AWS IoT Core 使用 MQTT 或 MQTT 存取 APIs。可用於 Node.js 環境和瀏覽器應用程式中。如需詳細資訊，請參閱下列內容：
+ [AWS IoT GitHub 上適用於 JavaScript v2 的裝置 SDK](https://github.com/aws/aws-iot-device-sdk-js-v2)
+ [AWS IoT 適用於 JavaScript v2 的 裝置 SDK 讀我檔案](https://github.com/aws/aws-iot-device-sdk-js-v2#aws-iot-device-sdk-for-javascript-v2)
+ [AWS IoT 適用於 JavaScript v2 的 裝置 SDK 範例](https://github.com/aws/aws-iot-device-sdk-js-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-for-javascript-v2)
+ [AWS IoT 適用於 JavaScript v2 的 裝置 SDK API 文件](https://aws.github.io/aws-iot-device-sdk-js-v2/index.html)

------
#### [ Java ]

**AWS IoT 適用於 Java 的裝置 SDK**

適用於 Java 的 AWS IoT 裝置開發套件可讓 Java 開發人員 AWS IoT Core 透過 MQTT 或 MQTT 透過 WebSocket 通訊協定存取 的 APIs。軟體開發套件支援 Device Shadow 服務。您可以使用 HTTP 方法來存取影子，包括 GET、UPDATE 與 DELETE。此軟體開發套件亦支援簡化的影子存取模式，開發人員只需使用 getter 和 setter 方法，即可與影子交換資料，而無需將任何 JSON 文件序列化或還原序列化。如需詳細資訊，請參閱下列內容：
+ [AWS IoT GitHub 上的適用於 Java 的 裝置 SDK v2](https://github.com/aws/aws-iot-device-sdk-java-v2)
+ [AWS IoT 適用於 Java v2 的 裝置 SDK 讀我檔案](https://github.com/aws/aws-iot-device-sdk-java-v2#aws-iot-device-sdk-for-java-v2)
+ [AWS IoT 適用於 Java 的 裝置 SDK v2 範例](https://github.com/aws/aws-iot-device-sdk-java-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-for-java-v2)
+ [AWS IoT 適用於 Java v2 的 裝置 SDK API 文件](https://aws.github.io/aws-iot-device-sdk-java-v2/)

------
#### [ Embedded C ]

**AWS IoT 適用於 Embedded C 的 裝置 SDK**

**重要**  
此 SDK 適合經驗豐富的嵌入式軟體開發人員使用。

 適用於 Embedded C 的 AWS IoT Device SDK (C-SDK) 是 MIT 開放原始碼授權下的 C 來源檔案集合，可用於內嵌應用程式，以安全地將 IoT 裝置連線至 AWS IoT Core。它包含 MQTT、JSON Parser 和 AWS IoT Device Shadow 程式庫等。它以原始碼形式分配，並且將會與應用程式碼、其他程式庫，以及 (可選的) RTOS (即時作業系統)，一起內建於客戶韌體中。

通常以需要最佳化 C 語言執行時間的資源限制裝置 適用於 Embedded C 的 AWS IoT Device SDK 為目標。您可以在任何作業系統上使用軟體開發套件，並將其裝載在任何處理器類型 (例如 MCU 和 MPU) 上。如果您的裝置有足夠的記憶體和處理資源，我們建議您使用其他裝置 AWS IoT 和行動 SDKs，例如適用於 C\$1\$1、Java、JavaScript 或 Python 的 AWS IoT 裝置 SDK。

如需詳細資訊，請參閱下列內容：
+ [AWS IoT GitHub 上適用於內嵌 C 的裝置 SDK](https://github.com/aws/aws-iot-device-sdk-embedded-C)
+ [AWS IoT 適用於 Embedded C 的 裝置 SDK 讀我檔案](https://github.com/aws/aws-iot-device-sdk-embedded-C#aws-iot-device-sdk-for-embedded-c)
+ [AWS IoT 適用於內嵌 C 的 裝置 SDK 範例](https://docs.aws.amazon.com/embedded-csdk/latest/lib-ref/docs/doxygen/output/html/demos_main.html)

------