デバイス通信プロトコル - AWS IoT Core

デバイス通信プロトコル

AWS IoT Core は、MQTT および MQTT over WebSocket Secure (WSS) プロトコルを使用してメッセージを発行およびサブスクライブするデバイスとクライアント、および HTTPS プロトコルを使用してメッセージを発行するデバイスとクライアントをサポートします。すべてのプロトコルでは、IPv4 および IPv6 がサポートされています。このセクションでは、デバイスおよびクライアントのさまざまな接続オプションについて説明します。

TLS v1.2

AWS IoT Core は、TLS バージョン 1.2 を使用してすべての通信を暗号化します。クライアントは、Server Name Indication (SNI) TLS 拡張も送信する必要があります。SNI を含まない接続試行は拒否されます。詳細については、AWS IoT のトランスポートセキュリティを参照してください。

AWS IoT デバイス SDKs は、MQTT および MQTT over WSS をサポートし、クライアント接続のセキュリティ要件をサポートします。AWS IoT デバイス SDKs を使用してクライアントを AWS IoT に接続することをお勧めします。

プロトコル、ポートマッピング、認証

デバイスまたはクライアントがデバイスエンドポイントを使用してメッセージブローカーに接続する方法は、使用するプロトコルによって異なります。次の表は、AWS IoT デバイスエンドポイントがサポートするプロトコルと、それらが使用する認証方法とポートを示しています。

プロトコル、認証、ポートマッピング
プロトコル サポートされているオペレーション 認証 ポート ALPN プロトコル名

MQTT over WebSocket

発行、サブスクライブ 署名バージョン 4 443

該当なし

MQTT over WebSocket

発行、サブスクライブ カスタム認証 443

該当なし

MQTT

発行、サブスクライブ

X.509 クライアント証明書

443

x-amzn-mqtt-ca

MQTT 発行、サブスクライブ X.509 クライアント証明書 8883 該当なし

MQTT

発行、サブスクライブ

カスタム認証

443

mqtt

HTTPS

発行のみ

署名バージョン 4

443

該当なし

HTTPS

発行のみ

X.509 クライアント証明書

443

x-amzn-http-ca

HTTPS 発行のみ X.509 クライアント証明書 8443 該当なし
HTTPS 発行のみ カスタム認証 443 該当なし
Application Layer Protocol Negotiation (ALPN)

ポート 443 で X.509 クライアント証明書認証を使用して接続するクライアントは、Application Layer Protocol Negotiation (ALPN) TLS 拡張を実装し、ClientHello メッセージの一部としてクライアントから送信された ALPN ProtocolNameList にリストされている ALPN プロトコル名を使用する必要があります。

ポート 443 では、IoT:Data-ATS エンドポイントは ALPN x-amzn-http-ca HTTP をサポートしますが、IoT:Jobs エンドポイントはサポートしません。

ALPN x-amzn-mqtt-ca を使用するポート 8443 HTTPS およびポート 443 MQTT では、カスタム認証を使用できません。

クライアントは、AWS アカウントのデバイスエンドポイントに接続します。アカウントのデバイスエンドポイントを見つける方法については、AWS IoT デバイスデータとサービスエンドポイント を参照してください。

AWS IoT Core への接続

プロトコル

エンドポイントまたは URL

MQTT

iot-endpoint

MQTT over WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

デバイス通信用のプロトコルの選択

デバイスエンドポイントを介したほとんどの IoT デバイス通信では、MQTT または MQTT over WSS プロトコルを使用することができます。ただし、デバイスエンドポイントは HTTPS もサポートします。次の表は、AWS IoT Core が 2 つのプロトコルをどのようにデバイス通信に使用するかを比較したものです。

AWS IoT デバイスのプロトコルを並べて表示

機能

MQTT

HTTPS

発行/サブスクライブのサポート

発行とサブスクライブ

発行のみ

SDK サポート

AWS Device SDK は MQTT および WSS プロトコルをサポートします

SDK のサポートはありませんが、言語固有のメソッドを使用して HTTPS リクエストを行うことができます

サービス品質のサポート

MQTT QoS レベル 0 および 1

QoS のサポートはありません

デバイスがオフラインのときにメッセージを受信できない はい いいえ

clientId フィールドのサポート

はい

いいえ

デバイスの切断検出

はい

いいえ

安全な通信

はい。「プロトコル、ポートマッピング、認証」を参照してください。

はい。「プロトコル、ポートマッピング、認証」を参照してください。

接続時間 最長数週間 最長 24 時間

トピックの定義

定義されているアプリケーション

定義されているアプリケーション

メッセージデータ形式

定義されているアプリケーション

定義されているアプリケーション

プロトコルのオーバーヘッド Lower より高い
消費電力 Lower より高い