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.
Abfragen zum Status der Gerätekonnektivität
AWS IoT Fleet Indexing unterstützt die Abfrage der Konnektivität einzelner Geräte, sodass Sie den Konnektivitätsstatus und die zugehörigen Metadaten für bestimmte Geräte effizient abrufen können. Diese Funktion ergänzt die bestehenden flottenweiten Indizierungs- und Abfragefunktionen.
Funktionsweise
Die Unterstützung von Abfragen zur Gerätekonnektivität kann für den optimierten Abruf des Verbindungsstatus einzelner Geräte verwendet werden. Diese API bietet Zugriff auf die neuesten gerätespezifischen Konnektivitätsinformationen mit niedriger Latenz und hohem Durchsatz. Sobald Sie die Konnektivitätsindizierung aktiviert haben, haben Sie Zugriff auf diese Abfrage-API, die als Standardabfragen berechnet wird. Weitere Informationen finden Sie unter AWS IoT Device Management
Features
Mit der Unterstützung von Abfragen zur Gerätekonnektivität können Sie:
-
Fragen Sie den aktuellen Verbindungsstatus (verbunden oder getrennt) für ein bestimmtes Gerät ab, indem Sie seine
thingNameverwenden. -
Rufen Sie zusätzliche Konnektivitätsmetadaten ab, darunter:
-
Grund für das Trennen der Verbindung
-
Zeitstempel für das letzte Verbindungs- oder Trennungsereignis.
-
Sitzungsinformationen, einschließlich der Keep-Alive-Dauer
-
Sitzungsinformationen auf Socket-Ebene, einschließlich IP-Adresse, Port und VPC-Endpunkt-ID. Diese Informationen sind nur verfügbar, wenn die folgenden Bedingungen erfüllt sind:
-
Sie aktivieren diese Option in den Konfigurationseinstellungen für die Flottenindexierung.
-
Sie haben die entsprechende Berechtigung in der IAM-Richtlinie, wenn Sie die API aufrufen.
-
-
Anmerkung
Die Flottenindizierung indexiert den Konnektivitätsstatus für ein Gerät, dessen Verbindung clientId mit der eines in thingName der Registrierung registrierten Geräts übereinstimmt.
Vorteile
-
Niedrige Latenz: Spiegelt den neuesten Status der Gerätekonnektivität wider und bietet eine geringe Latenz, um Änderungen des Verbindungsstatus von IoT Core widerzuspiegeln. IoT Core bestimmt, dass ein Gerät entweder getrennt ist, sobald es eine Verbindungsabbruchanfrage vom Gerät erhält, oder wenn ein Gerät die Verbindung trennt, ohne eine Trennungsanfrage zu senden. Der IoT-Core wartet das 1,5-fache der konfigurierten Keep-Alive-Zeit, bevor festgestellt wird, dass der Client getrennt wird. Die Konnektivitätsstatus-API spiegelt diese Änderungen in der Regel in weniger als einer Sekunde wider, nachdem IoT Core die Änderung des Verbindungsstatus eines Geräts festgestellt hat.
-
Hoher Durchsatz: Unterstützt standardmäßig 350 Transaktionen pro Sekunde (TPS) und kann auf Anfrage auf einen höheren Wert eingestellt werden.
-
Datenspeicherung: Speichert Ereignisdaten auf unbestimmte Zeit, wenn der Fleet Indexing (FI) ConnectivityIndexing -Modus aktiviert ist und das Ding nicht gelöscht wird. Wenn Sie die Konnektivitätsindizierung deaktivieren, werden die Datensätze nicht aufbewahrt.
Anmerkung
Wenn die Indizierung des Konnektivitätsstatus vor dem Start dieser API aktiviert wurde, beginnt Fleet Indexing mit der Verfolgung von Änderungen des Konnektivitätsstatus nach dem Start der API und spiegelt den aktualisierten Status auf der Grundlage dieser Änderungen wider.
Voraussetzungen
So verwenden Sie die Unterstützung für Gerätekonnektivitätsabfragen:
-
Geräte AWS IoT Core in Ihrer bevorzugten Region einbinden und registrieren
-
Aktivieren Sie die Flottenindizierung mit der Konnektivitätsindizierung. Optional: Opt-in um Informationen auf Socket-Ebene zu erhalten, indem Sie die
includeSocketInformationOption aktivieren.
Anmerkung
Es ist keine zusätzliche Einrichtung erforderlich, wenn Sie die Konnektivitätsindizierung bereits aktiviert haben.
Ausführliche Anweisungen zur Einrichtung finden Sie im AWS IoT Entwicklerhandbuch
Beispiel
CLI-Befehl:
aws iot get-thing-connectivity-data --include-socket-information --thing-name myThingName
Antwort:
{ "thingName": "myThingName", "connected": true, "timestamp": "2024-12-19T10:00:00.000000-08:00", "disconnectReason": "NONE", "sourceIp": "192.0.2.1", "sourcePort": 52123, "targetIp": "198.51.100.1", "targetPort": 8883, "vpcEndpointId": "vpce-1234567890abcdef0", "keepAliveDuration": 60, "cleanSession": true, "clientId": "myThingName" }
API-Parameter
-
thingName: Der Name des in der AWS IoT Registrierung registrierten Geräts. Dies muss mit dem übereinstimmen, der für die Verbindung mit AWS IoT CoreclientIdverwendet wurde. -
includeSocketInformation: DerincludeSocketInformationParameter steuert, ob Netzwerkinformationen auf Socket-Ebene in der API-Antwort enthalten sind. Wenn der Wert auf true gesetzt ist, umfasst die Antwort die folgenden Felder:.sourceIp, sourcePort, targetIp, targetPort, vpcEndpointIdWenn nicht angegeben oder auf False gesetztincludeSocketInformationist, werden diese Socket-Felder von der Antwort ausgeschlossen. Um den Zugriff bestimmter IAM-Benutzer auf Socket-Informationen zu beschränken, müssen Sie dies in ihrer IAM-Richtlinie angeben, indem Sie denincludeSocketInformationBedingungsschlüssel auf „False“ setzen.
Antwortfelder
-
thingName: Der Name des in der AWS IoT Registrierung registrierten Geräts. Dies muss mit dem übereinstimmen, der für die Verbindung mit AWS IoT CoreclientIdverwendet wurde. -
connected: Der boolesche Wert true gibt an, dass dieses Gerät derzeit verbunden ist. -
disconnectReason: Grund für die Verbindung. GiltNONEfür ein verbundenes Gerät undUNKNOWNfür ein Gerät, das noch nie angeschlossen wurde. Bei einem getrennten Gerät gibt dies an, ob die Trennung vom Client oder vom Server initiiert wurde, aufgrund von authentication/authorization Problemen oder Netzwerkproblemen. Die Ursachencodes für die Unterbrechung der Verbindung finden Sie unter LifeCycleEvents -
timestamp: Der Zeitstempel, der das letzte Verbindungs- oder Trennungsereignis des Geräts darstellt. -
clientId: Die clientId des MQTT-Clients. -
keepAliveDuration: Das Keep-Alive-Intervall in Sekunden, das der Client beim Verbindungsaufbau angegeben hat. Dies bestimmt, wie oft der Client Keep-Alive-Nachrichten sendet, um die Verbindung aufrechtzuerhalten. -
cleanSession: Gibt an, ob der Client eine saubere Sitzung verwendet. -
sessionExpiry: Die Konfiguration für den dauerhaften Ablauf der Sitzung, die der Client beim Verbindungsaufbau angegeben hat. Dies bestimmt, wie lange eine Sitzung aktiv bleibt, nachdem der Client die Verbindung getrennt hat. -
sourceIp: Die IP-Adresse des Clients, der die Verbindung initiiert hat. Wird nur zurückgegeben, wenn der Wert auf „true“ gesetztincludeSocketInformationist und der Benutzer berechtigt ist, diese Informationen abzurufen. -
sourcePort: Die vom Client für die Verbindung verwendete Portnummer. Wird nur zurückgegeben, wenn der Wert auf true gesetztincludeSocketInformationist und der Benutzer berechtigt ist, diese Informationen abzurufen. -
targetIp: Die IP-Adresse, an die die Verbindungsanfrage gestellt wurde. Wird nur zurückgegeben, wenn sie auf „true“ gesetztincludeSocketInformationist und der Benutzer berechtigt ist, diese Informationen abzurufen -
targetPort: Die Portnummer des AWS IoT Core-Endpunkts, mit dem der Client eine Verbindung hergestellt hat. Wird nur zurückgegeben, wenn der Wert auf „true“ gesetztincludeSocketInformationist und der Benutzer berechtigt ist, diese Informationen abzurufen. -
vpcEndpointId: Die ID des VPC-Endpunkts, über den der Client eine Verbindung hergestellt hat, falls zutreffend. Wird nur zurückgegeben, wenn sie auf „true“ gesetztincludeSocketInformationist und der Benutzer berechtigt ist, diese Informationen abzurufen.
Erforderliche Berechtigungen
Um die GetThingConnectivityData API verwenden zu können, benötigen Sie die folgende IAM-Berechtigung
iot:GetThingConnectivityData
Sie können diese Berechtigung mithilfe von ressourcenbasierten Richtlinien auf bestimmte Dinge beschränken. Verwenden Sie die iot:IncludeSocketInformation Bedingung, um eine detaillierte Zugriffskontrolle für Socket-Informationen zu implementieren. Das folgende Richtlinienbeispiel zeigt ein Szenario, in dem Sie dem Benutzer den Zugriff auf Socket-Informationen verweigern. Bitte beachten Sie, dass dieses Beispiel funktioniert, wenn es die einzige Richtlinie ist, die Zugriff auf die Aktion gewährt GetThingConnectivityData.
Beispiele für Autorisierungsrichtlinien
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:GetThingConnectivityData" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:thing/*"], "Condition": { "Bool": { "iot:IncludeSocketInformation": "false" } } }] }