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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

デバイス通信プロトコル

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

TLS 1.2 および TLS 1.3

AWS IoT Core TLS バージョン 1.2 と TLS バージョン 1.3 を使用してすべての通信を暗号化します。デバイスを AWS IoT Coreに接続する際、クライアントはサーバー名表示 (SNI) 拡張子を送信できます。これは必須ではありませんが、強くお勧めします。マルチアカウント登録カスタムドメインVPC エンドポイントなどの機能を使用するには、SNI 拡張機能を使用する必要があります。詳細については、の「トランスポートセキュリティ」を参照してください。 AWS IoT

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

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

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

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

MQTT オーバー WebSocket

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

該当なし

マットオーバー 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 該当なし

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

注記

AWS SDK は URL 全体を必要としません。必要なのは、AWS IoT Device SDK for Python pubsub.py のサンプルのようなエンドポイントのホスト名だけです。 GitHub次の表にあるような完全な URL を渡すと、無効なホスト名などのエラーが発生する可能性があります。

に接続する 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 もサポートします。次の表は、この 2 AWS IoT Core つのプロトコルをデバイス通信に使用する方法を比較したものです。

AWS IoT デバイスプロトコル side-by-side

機能

MQTT

HTTPS

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

発行とサブスクライブ

発行のみ

SDK サポート

AWS デバイス SDK は MQTT プロトコルと WSS プロトコルをサポートします。

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

サービス品質のサポート

MQTT QoS レベル 0 および 1

QoS は、クエリ文字列パラメータを渡すことによってサポートされ、?qos=qosここで、値は0または1にすることができます。このクエリ文字列を追加して、必要な QoS 値を持つメッセージが発行できます。
デバイスがオフラインのときに受信しなかったメッセージを受信できる Yes いいえ

clientId フィールドのサポート

はい

いいえ

デバイスの切断検出

はい

いいえ

安全な通信

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

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

トピックの定義

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

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

メッセージデータ形式

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

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

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

接続時間の制限

HTTPS 接続では、リクエストの受信と応答にかかるよりも長い持続時間が保証されていません。

MQTT 接続時間は、使用する認証機能によって異なります。次の表では、各機能の最適な条件下での最大接続時間が一覧表示されています。

認証機能による MQTT 接続時間

機能

最大時間 *

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

1~2 週間

カスタム認証

1~2 週間

署名バージョン 4

最長 24 時間

* 保証なし

X.509 証明書やカスタム認証では、接続時間に厳しい制限はありません。数分程度に短縮することも可能です。接続の中断は、さまざまな理由で発生します。次のリストには、最も一般的な理由の一部が含まれています。

  • Wi-Fi 可用性の中断

  • インターネットサービスプロバイダー (ISP) 接続の中断

  • サービスのパッチ

  • サービスのデプロイ

  • サービスのオートスケーリング

  • 使用できないサービスホスト

  • ロードバランサーの問題および更新

  • クライアント側エラー

デバイスで、切断を検出して再接続するための戦略を実装する必要があります。接続解除イベントとその処理方法に関するガイダンスについては、ライフサイクルイベント接続/切断イベントを参照してください。