Gerätekommunikationsprotokolle - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Gerätekommunikationsprotokolle

AWS IoT Core unterstützt Geräte und Clients, die die Protokolle MQTT und MQTT over WebSocket Secure (WSS) verwenden, um Nachrichten zu veröffentlichen und zu abonnieren, sowie Geräte und Clients, die das HTTPS Protokoll zum Veröffentlichen von Nachrichten verwenden. Alle Protokolle unterstützen IPv4 undIPv6. In diesem Abschnitt werden die verschiedenen Verbindungsoptionen für Geräte und Kunden beschrieben.

TLSProtokollversionen

AWS IoT Core verwendet TLSVersion 1.2 und TLSVersion 1.3, um die gesamte Kommunikation zu verschlüsseln. Sie können zusätzliche TLS Richtlinienversionen für Ihren Endpunkt konfigurieren, indem Sie die TLSEinstellungen in den Domänenkonfigurationen konfigurieren. Beim Verbinden von Geräten mit können Clients die Erweiterung Server Name Indication (SNI) senden, die für Funktionen wie die Registrierung mehrerer Konten, konfigurierbare Endpunkte, benutzerdefinierte Domänen und VPC Endpunkte erforderlich ist. AWS IoT Core Weitere Informationen finden Sie unter Transportsicherheit in AWS IoT.

Die AWS IoT Gerät SDKs Unterstützung MQTT WSS und MQTT Unterstützung der Sicherheitsanforderungen von Client-Verbindungen. Wir empfehlen die Verwendung von AWS IoT Gerät SDKs, um Clients mit dem AWS IoT zu verbinden.

Protokolle, Port-Zuweisungen und Authentifizierung

Wie ein Gerät oder ein Client eine Verbindung zum Message Broker herstellt, kann mithilfe eines Authentifizierungstyps konfiguriert werden. Standardmäßig oder wenn keine SNI Erweiterung gesendet wird, basiert die Authentifizierungsmethode auf dem Anwendungsprotokoll, dem Port und der TLS Erweiterung Application Layer Protocol Negotiation (ALPN), die Geräte verwenden. In der folgenden Tabelle ist die erwartete Authentifizierung basierend auf Port, Port und aufgeführtALPN.

Protokolle, Authentifizierung und Port-Zuweisungen
Protokoll Unterstützte Operationen Authentifizierung Port ALPNProtokollname

MQTTüber WebSocket

Veröffentlichen, Abonnieren Signaturversion 4 443

N/A

MQTTüber WebSocket

Veröffentlichen, Abonnieren Benutzerdefinierte Authentifizierung 443

N/A

MQTT

Veröffentlichen, Abonnieren

X.509-Clientzertifikat

443

x-amzn-mqtt-ca

MQTT Veröffentlichen, Abonnieren X.509-Clientzertifikat 8883 N/A

MQTT

Veröffentlichen, Abonnieren

Benutzerdefinierte Authentifizierung

443

mqtt

HTTPS

Nur veröffentlichen

Signaturversion 4

443

N/A

HTTPS

Nur veröffentlichen

X.509-Clientzertifikat

443

x-amzn-http-ca

HTTPS Nur veröffentlichen X.509-Clientzertifikat 8443 N/A
HTTPS Nur veröffentlichen Benutzerdefinierte Authentifizierung 443 N/A
Protokollaushandlung auf Anwendungsebene (ALPN)

Bei Verwendung von Standard-Endpunktkonfigurationen müssen Clients, die sich über Port 443 mit X.509-Client-Zertifikatsauthentifizierung verbinden, die TLS Erweiterung Application Layer Protocol Negotiation (ALPN) implementieren und den ALPNProtokollnamen verwenden, der im vom Client ALPN ProtocolNameList gesendeten Protokoll als Teil der ClientHello Nachricht aufgeführt ist.

Auf Port 443 unterstützt der iot:Data-Endpunkt, der ATS iot:Jobs-Endpunkt ALPN x-amzn-http-ca HTTP jedoch nicht.

Auf Port 8443 HTTPS und Port 443 MQTT mit ALPN x-amzn-mqtt-ca kann die benutzerdefinierte Authentifizierung nicht verwendet werden.

Clients stellen eine Verbindung zu ihren AWS-Konto Geräteendpunkten her. Informationen darüber, wie Sie die Geräteendpunkte Ihres Kontos finden, finden Sie unter AWS IoT Gerätedaten und Dienstendpunkte.

Anmerkung

AWS SDKsbenötigen nicht das GanzeURL. Sie benötigen nur den Endpunkt-Hostnamen, wie das pubsub.pyBeispiel für AWS IoT Device SDK for Python on GitHub. Wenn Sie den gesamten Wert URL wie in der folgenden Tabelle angegeben übergeben, kann dies zu einem Fehler führen, z. B. zu einem ungültigen Hostnamen.

Verbindung herstellen zu AWS IoT Core

Protokoll

Endpunkt oder URL

MQTT

iot-endpoint

MQTTüber WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

Wählen Sie ein Anwendungsprotokoll für Ihre Gerätekommunikation

Für den Großteil der IoT-Gerätekommunikation über die Geräteendpunkte sollten Sie die Protokolle Secure MQTT oder MQTT over WebSocket Secure (WSS) verwenden. Die Geräteendpunkte unterstützen sie jedoch auch. HTTPS

In der folgenden Tabelle wird verglichen, wie die beiden High-Level-Protokolle (MQTTundHTTPS) für die Gerätekommunikation AWS IoT Core verwendet werden.

AWS IoT Geräteprotokolle (MQTTundHTTPS) side-by-side

Funktion

MQTT

HTTPS

Unterstützung von Veröffentlichen/Abonnieren

Veröffentlichen und Abonnieren

Nur veröffentlichen

SDKUnterstützung

AWS SDKsGeräteunterstützung MQTT und WSS Protokolle

Keine SDK Unterstützung, aber Sie können sprachspezifische Methoden verwenden, um Anfragen zu stellen HTTPS

Qualität der Service-Unterstützung

MQTTQoS-Stufen 0 und 1

QoS wird durch die Übergabe eines Abfragezeichenfolge-Parameter ?qos=qos unterstütz, dessen Wert 0 oder 1 sein kann. Sie können diese Abfragezeichenfolge hinzufügen, um eine Nachricht mit dem gewünschten QoS-Wert zu veröffentlichen.
Können empfangene Nachrichten verpasst werden, während das Gerät offline war Ja Nein

Unterstützung von clientId-Feldern

Ja

Nein

Erkennung von Geräteunterbrechungen

Ja

Nein

Sichere Kommunikationen

Ja. Siehe Protokolle, Port-Zuweisungen und Authentifizierung

Ja. Siehe Protokolle, Port-Zuweisungen und Authentifizierung

Themendefinitionen

Anwendung definiert

Anwendung definiert

Format der Nachrichtendaten

Anwendung definiert

Anwendung definiert

Protokoll-Overhead Niedriger Höher
Stromverbrauch Niedriger Höher

Wählen Sie einen Authentifizierungstyp für Ihre Gerätekommunikation

Sie können den Authentifizierungstyp für Ihren IoT-Endpunkt mithilfe konfigurierbarer Endpunkte konfigurieren. Verwenden Sie alternativ die Standardkonfiguration und legen Sie anhand der Kombination aus Anwendungsprotokoll, Port und ALPN TLS Erweiterung fest, wie sich Ihre Geräte authentifizieren. Der von Ihnen gewählte Authentifizierungstyp bestimmt, wie sich Ihre Geräte authentifizieren, wenn sie eine Verbindung herstellen. AWS IoT Core Es gibt fünf Authentifizierungstypen:

X.509-Zertifikat enthalten

Authentifizieren Sie Geräte mithilfe von X.509-Client-Zertifikaten, wodurch die Authentifizierung des AWS IoT Core Geräts bestätigt wird. Dieser Authentifizierungstyp funktioniert mit Secure MQTT (MQTToverTLS) und Protokollen. HTTPS

X.509-Zertifikat mit benutzerdefiniertem Authorizer

Authentifizieren Sie Geräte mithilfe von X.509-Client-Zertifikaten und führen Sie zusätzliche Authentifizierungsaktionen mit einem benutzerdefinierten Authorizer durch, der X.509-Client-Zertifikatsinformationen empfängt. Dieser Authentifizierungstyp funktioniert mit Secure MQTT (MQTToverTLS) und Protokollen. HTTPS Dieser Authentifizierungstyp ist nur mit konfigurierbaren Endpunkten mit benutzerdefinierter X.509-Authentifizierung möglich. Hier gibt es keine Option ALPN.

AWS Signatur Version 4 (Sigv4)

Authentifizieren Sie Geräte mit Cognito oder Ihrem Backend-Service und unterstützen Sie so den Verbund von sozialen Netzwerken und Unternehmen. Dieser Authentifizierungstyp funktioniert mit MQTT WebSocket OverSecure (WSS) und Protokollen. HTTPS

Benutzerdefinierter Autorisierer

Authentifizieren Sie Geräte, indem Sie eine Lambda-Funktion konfigurieren, um benutzerdefinierte Authentifizierungsinformationen zu verarbeiten, an die gesendet werden. AWS IoT Core Dieser Authentifizierungstyp funktioniert mit den Protokollen Secure MQTT (MQTToverTLS) und MQTT over WebSocket Secure (WSS). HTTPS

Standard

Authentifizieren Sie Geräte auf der Grundlage der Port- und/oder der Erweiterung Protocol Negotiation (ALPN) auf Anwendungsebene, die die Geräte verwenden. Einige zusätzliche Authentifizierungsoptionen werden nicht unterstützt. Weitere Informationen finden Sie unter Protokolle, Port-Zuweisungen und Authentifizierung.

Die folgende Tabelle zeigt alle unterstützten Kombinationen von Authentifizierungstypen und Anwendungsprotokollen.

Unterstützte Kombinationen von Authentifizierungstypen und Anwendungsprotokollen
Authentifizierungstyp Sicher MQTT (MQTTüberTLS) MQTTüber WebSocket Sicher (WSS) HTTPS Standard
X.509-Zertifikat enthalten
X.509-Zertifikat mit benutzerdefiniertem Authorizer
AWS Signatur Version 4 (Sigv4)
Benutzerdefinierter Autorisierer
Standard

Einschränkungen der Verbindungsdauer

HTTPSEs kann nicht garantiert werden, dass Verbindungen länger dauern als die Zeit, die für den Empfang und die Beantwortung von Anfragen benötigt wird.

MQTTDie Verbindungsdauer hängt von der verwendeten Authentifizierungsfunktion ab. In der folgenden Tabelle ist die maximale Verbindungsdauer unter idealen Bedingungen für jede Funktion aufgeführt.

MQTTVerbindungsdauer je nach Authentifizierungsfunktion

Funktion

Maximale Dauer *

X.509-Clientzertifikat

1 bis 2 Wochen

Benutzerdefinierte Authentifizierung

1 bis 2 Wochen

Signaturversion 4

Bis zu 24 Stunden

* Nicht garantiert

Mit X.509-Zertifikaten und benutzerdefinierter Authentifizierung gibt es keine feste Grenze für die Verbindungsdauer, sie kann jedoch auch nur wenige Minuten lang sein. Verbindungsunterbrechungen können aus verschiedenen Gründen auftreten. Die folgende Liste enthält einige der gängigsten Gründe.

  • Unterbrechungen der Wi-Fi-Verfügbarkeit

  • Verbindungsunterbrechungen des Internetdienstanbieters (ISP)

  • Service-Patches

  • Dienstbereitstellungen

  • Service Auto Scaling

  • Nicht verfügbarer Dienst-Host

  • Load Balancer-Probleme und -Aktualisierungen

  • Client-seitige Fehler

Ihre Geräte müssen Strategien zur Erkennung von Verbindungsabbrüchen und zur Wiederherstellung der Verbindung implementieren. Informationen zu Trennungsereignissen und Anleitungen, wie Sie damit umgehen können, finden Sie in Ereignisse im Lebenszyklus unter „Verbinden/Verbindung trennen“-Ereignisse.