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

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

デバイス通信プロトコル

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

TLS プロトコルバージョン

AWS IoT Core はTLS、バージョン 1.2TLSバージョン 1.3 を使用してすべての通信を暗号化します。ドメインTLS設定で設定することで、エンドポイントに追加のTLSポリシーバージョンを設定できます。デバイスを に接続する場合 AWS IoT Core、クライアントはサーバー名表示 (SNI) 拡張機能を送信できます。これは、マルチアカウント登録設定可能なエンドポイントカスタムドメインVPCエンドポイントなどの機能に必要です。詳細については、「Transport Security in AWS IoT」を参照してください。

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

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

デバイスまたはクライアントがメッセージブローカーに接続する方法は、[認証タイプ] を使用して設定できます。デフォルトでは、またはSNI拡張機能が送信されない場合、認証方法は、デバイスが使用するアプリケーションプロトコル、ポート、および Application Layer Protocol Negotiation (ALPN) TLS拡張機能に基づいています。次の表に、ポート、ポート、および に基づいて想定される認証を示しますALPN。

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

MQTT 経由 WebSocket

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

該当なし

MQTT 経由 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 プロトコルネゴシエーション (ALPN)

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

ポート 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 over WebSocket Secure (WSS) プロトコルを使用します。ただし、デバイスエンドポイントは もサポートしていますHTTPS。

次の表は、 がデバイス通信に 2 つの高レベルプロトコル (MQTT と HTTPS) AWS IoT Core を使用する方法を比較したものです。

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 フィールドのサポート

はい

いいえ

デバイスの切断検出

はい

いいえ

安全な通信

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

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

トピックの定義

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

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

メッセージデータ形式

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

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

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

デバイス通信の認証タイプの選択

設定可能なエンドポイントを使用して、IoT エンドポイントの認証タイプを設定できます。または、デフォルト設定を使用して、デバイスがアプリケーションプロトコル、ポート、ALPNTLS拡張機能の組み合わせで認証する方法を決定します。選択した認証タイプによって、接続時のデバイスの認証方法が決まります AWS IoT Core。5 つの認証タイプがあります。

X.509 証明書

X.509 クライアント証明書を使用してデバイスを認証します。これにより、 がデバイスを認証すること AWS IoT Core を検証します。この認証タイプは、Secure MQTT (MQTT 経由TLS) および HTTPSプロトコルで動作します。

カスタムオーソライザーを使用した X.509 証明書

X.509 クライアント証明書を使用してデバイスを認証し、X.509 クライアント証明書情報を受信するカスタムオーソライザーを使用して追加の認証アクションを実行します。この認証タイプは、Secure MQTT (MQTT 経由TLS) および HTTPSプロトコルで動作します。この認証タイプは、X.509 カスタム認証で設定可能なエンドポイントでのみ使用できます。ALPN オプションはありません。

AWS 署名バージョン 4 (SigV4)

Cognito またはバックエンドサービスを使用してデバイスを認証し、ソーシャルフェデレーションとエンタープライズフェデレーションをサポートします。この認証タイプは、 WebSocket Secure (WSS) および HTTPSプロトコルMQTTを介して で機能します。

カスタムオーソライザー

Lambda 関数を設定してデバイスを認証し、 AWS IoT Coreに送信されるカスタム認証情報を処理します。この認証タイプはHTTPS、Secure MQTT (MQTT 経由TLS)、、および WebSocket Secure (WSS) プロトコルMQTT経由で動作します。

デフォルト

デバイスが使用するポートやアプリケーションレイヤーのプロトコルネゴシエーション (ALPN) 拡張機能に基づいてデバイスを認証します。一部の追加の認証オプションはサポートされていません。詳細については、「プロトコル、ポートマッピング、認証」を参照してください。

以下の表は、サポートされている認証タイプとアプリケーションプロトコルのすべての組み合わせを示しています。

サポートされている認証タイプとアプリケーションプロトコルの組み合わせ
認証タイプ セキュア MQTT (MQTT 経由TLS) MQTT WebSocket セキュア経由 (WSS) HTTPS デフォルト値
X.509 証明書
カスタムオーソライザーを使用した X.509 証明書
AWS 署名バージョン 4 (SigV4)
カスタムオーソライザー
デフォルト

接続時間の制限

HTTPS 接続は、リクエストの受信と応答にかかる時間よりも長く続くとは限りません。

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

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

機能

最大時間 *

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

1~2 週間

カスタム認証

1~2 週間

署名バージョン 4

最長 24 時間

* 保証なし

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

  • Wi-Fi 可用性の中断

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

  • サービスのパッチ

  • サービスのデプロイ

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

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

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

  • クライアント側エラー

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