裝置通訊協定 - AWS IoT Core

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

裝置通訊協定

AWS IoT Core 支援使用 和 MQTT WebSocket 安全 (WSS) 通訊協定來發佈和訂閱訊息的裝置MQTT和用戶端,以及使用HTTPS通訊協定來發佈訊息的裝置和用戶端。所有通訊協定都支援 IPv4和 IPv6。本節說明裝置和用戶端的不同連線選項。

TLS 通訊協定版本

AWS IoT Core 使用 1TLS.2 版和 TLS1.3 版來加密所有通訊。 https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2您可以在網域組態 中設定TLS設定,為端點設定其他TLS政策版本。將裝置連線至 時 AWS IoT Core,用戶端可以傳送伺服器名稱指示 (SNI) 延伸模組 ,這是多帳戶註冊可設定端點 自訂網域 VPC端點 等功能所需的 。如需詳細資訊,請參閱 AWS IoT中的傳輸安全性

AWS IoT 裝置 SDKs 支援 MQTT和 MQTT,WSS並支援用戶端連線的安全需求。建議您使用 AWS IoT 裝置 SDKs 將用戶端連線至 AWS IoT。

通訊協定、連接埠映射和身分驗證

裝置或用戶端連線至訊息代理程式的方式,可使用身分驗證類型 進行設定。根據預設或當未傳送SNI擴充功能時,身分驗證方法是根據裝置使用的應用程式通訊協定、連接埠和應用程式層通訊協定交涉 (ALPN) TLS擴充功能。下表列出根據連接埠、連接埠和 預期的身分驗證ALPN。

通訊協定、身分驗證和連接埠對應
通訊協定 支援的操作 身分驗證 連線埠 ALPN 通訊協定名稱

MQTT 超過 WebSocket

發佈、訂閱 Signature 第 4 版 443

N/A

MQTT 超過 WebSocket

發佈、訂閱 自訂身分驗證 443

N/A

MQTT

發佈、訂閱

X.509 用戶端憑證

443

x-amzn-mqtt-ca

MQTT 發佈、訂閱 X.509 用戶端憑證 8883 N/A

MQTT

發佈、訂閱

自訂身分驗證

443

mqtt

HTTPS

僅發佈

Signature 第 4 版

443

N/A

HTTPS

僅發佈

X.509 用戶端憑證

443

x-amzn-http-ca

HTTPS 僅發佈 X.509 用戶端憑證 8443 N/A
HTTPS 僅發佈 自訂身分驗證 443 N/A
應用程式層通訊協定交涉 (ALPN)

使用預設端點組態時,透過 X.509 用戶端憑證身分驗證在連接埠 443 上連線的用戶端必須實作應用程式層通訊協定交涉 (ALPN) TLS延伸,並使用用戶端ALPN ProtocolNameList 傳送的 中列出的ALPN通訊協定名稱作為ClientHello訊息的一部分。

在連接埠 443 上,IoT :Data-ATS 端點支援 ALPN x-amzn-http-ca HTTP,但 IoT :Jobs 端點不支援。

在具有 MQTT的連接埠 8443 HTTPS和連接埠 443 上ALPN x-amzn-mqtt-ca,無法使用自訂身分驗證

用戶端會連線至 AWS 帳戶其 的裝置端點。如需有關如何尋找帳戶的裝置端點的資訊,請參閱AWS IoT 裝置資料和服務端點

注意

AWS SDKs 不需要整個 URL。它們只需要端點主機名稱,例如 pubsub.py 上的 AWS IoT Device SDK for Python 範例 GitHub。URL 如下表所述傳遞整個 可能會產生錯誤,例如無效的主機名稱。

連線至 AWS IoT Core

通訊協定

端點或 URL

MQTT

iot-endpoint

MQTT 超過 WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

選擇裝置通訊的應用程式通訊協定

對於透過裝置端點進行大多數 IoT 裝置通訊,您需要使用 Secure MQTT MQTT或透過 WebSocket Secure (WSS) 通訊協定;不過,裝置端點也支援 HTTPS。

下表比較 AWS IoT Core 了如何使用兩個高階通訊協定 (MQTT 和 HTTPS) 進行裝置通訊。

AWS IoT 裝置通訊協定 (MQTT 和 HTTPS) side-by-side

功能

MQTT

HTTPS

發佈/訂閱支援

發佈和訂閱

僅發佈

SDK 支援

AWS 裝置SDKs支援MQTT和WSS通訊協定

不支援SDK,但您可以使用特定語言的方法提出HTTPS請求

服務品質支援

MQTT QoS 層級 0 和 1

QoS 的支援是透過傳遞查詢字串參數 ?qos=qos 來進行,其中值可以是 0 或 1。您可以新增此查詢字串,以發佈內含您所需之 QoS 值的訊息。
可接收裝置離線時所遺漏的訊息

clientId 欄位支援

裝置中斷連線偵測

安全通訊

是。請參閱 通訊協定、連接埠映射和身分驗證

是。請參閱 通訊協定、連接埠映射和身分驗證

主題定義

應用程式定義

應用程式定義

訊息資料格式

應用程式定義

應用程式定義

通訊協定負荷 較低 較高
耗電量 較低 較高

選擇裝置通訊的身分驗證類型

您可以使用可設定的端點來設定 IoT 端點的身分驗證類型。或者,使用預設組態,並判斷您的裝置如何透過應用程式通訊協定、連接埠和ALPNTLS延伸組合進行身分驗證。您選擇的身分驗證類型會決定您的裝置在連線至 時如何進行身分驗證 AWS IoT Core。有五種身分驗證類型:

X.509 憑證

使用 X.509 用戶端憑證 來驗證裝置,以 AWS IoT Core 驗證裝置。此身分驗證類型適用於安全 MQTT(MQTT透過 TLS) 和HTTPS通訊協定。

具有自訂授權方的 X.509 憑證

使用 X.509 用戶端憑證驗證裝置,並使用自訂授權方 執行其他驗證動作,這將接收 X.509 用戶端憑證資訊。此身分驗證類型適用於安全 MQTT(MQTT透過 TLS) 和HTTPS通訊協定。此身分驗證類型只能使用 X.509 自訂身分驗證的可設定端點。沒有 ALPN 選項。

AWS 簽章版本 4 (SigV4)

使用 Cognito 或後端服務驗證裝置,支援社交和企業聯合。此身分驗證類型可透過 WebSocket 安全 MQTT (WSS) 和HTTPS通訊協定使用 。

自訂授權方

透過設定 Lambda 函數來驗證裝置,以處理傳送至 的自訂身分驗證資訊 AWS IoT Core。此身分驗證類型適用於安全 MQTT(MQTT透過 TLS) HTTPS、 和 MQTT 透過 WebSocket 安全 (WSS) 通訊協定。

預設

根據裝置使用的連接埠和/或應用程式層通訊協定交涉 (ALPN) 延伸來驗證裝置。不支援某些其他身分驗證選項。如需詳細資訊,請參閱通訊協定、連接埠映射和身分驗證

下表顯示所有支援的身分驗證類型和應用程式通訊協定組合。

支援的身分驗證類型和應用程式通訊協定組合
身分驗證類型 安全 MQTT(MQTT超過 TLS) MQTT 透過 WebSocket 安全 (WSS) HTTPS 預設
X.509 憑證
具有自訂授權方的 X.509 憑證
AWS 簽章版本 4 (SigV4)
自訂授權方
預設

連線持續時間限制

HTTPS 連線的持續時間不保證超過接收和回應請求所需的時間。

MQTT 連線持續時間取決於您使用的身分驗證功能。下表列出每項功能在理想條件下的連線持續時間上限。

MQTT 依身分驗證功能的連線持續時間

功能

持續時間上限 *

X.509 用戶端憑證

1–2 週

自訂身分驗證

1–2 週

Signature 第 4 版

長達 24 小時

* 不保證

使用 X.509 憑證和自訂身分驗證時,連線持續時間沒有硬性限制,但可以短至幾分鐘。有多種原因可能導致連線中斷。下方清單中包含一些最常見的原因。

  • Wi-Fi 可用性中斷

  • 網際網路服務供應商 (ISP) 連線中斷

  • 服務修補程式

  • 服務部署

  • 服務自動擴展

  • 服務主機無法使用

  • 負載平衡器問題和更新

  • 用戶端錯誤

您的裝置必須實作偵測中斷連線和重新連線的策略。如需中斷連線事件的詳細資訊,以及處理前述事件的指導,請參閱 生命週期事件 中的 連線/中斷連線事件