Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Requêtes sur l'état de connectivité des appareils
AWS IoT Fleet Indexing prend en charge les requêtes de connectivité des appareils individuels, ce qui vous permet de récupérer efficacement l'état de la connectivité et les métadonnées associées pour des appareils spécifiques. Cette fonctionnalité complète les fonctionnalités d'indexation et d'interrogation existantes à l'échelle de la flotte.
Comment ça marche
La prise en charge des requêtes de connectivité des appareils peut être utilisée pour une récupération optimisée de l'état de connectivité d'un seul appareil. Cette API fournit un accès à haut débit et à faible latence aux informations de connectivité spécifiques à l'appareil les plus récentes. Une fois que vous aurez activé l'indexation de la connectivité, vous aurez accès à cette API de requête qui sera facturée comme des requêtes standard. Pour plus d'informations, consultez la section Tarification de la gestion des AWS IoT appareils
Caractéristiques
Grâce à la prise en charge des requêtes de connectivité des appareils, vous pouvez :
-
Interrogez l'état actuel de la connectivité (connecté ou déconnecté) pour un appareil donné à l'aide de son
thingName. -
Récupérez des métadonnées de connectivité supplémentaires, notamment :
-
Raison de la déconnexion
-
Horodatage de l'événement de connexion ou de déconnexion le plus récent.
-
Informations sur la session, y compris la durée de maintien en vie
-
Informations de session au niveau du socket, y compris l'adresse IP, le port et l'ID de point de terminaison VPC. Ces informations ne sont disponibles que lorsque les conditions suivantes sont remplies :
-
Vous activez cette option dans les paramètres de configuration de l'indexation de flotte.
-
Vous disposez de l'autorisation correspondante dans la politique IAM lorsque vous appelez l'API.
-
-
Avantages
-
Faible latence : reflète l'état de connectivité le plus récent de l'appareil et offre une faible latence pour refléter les changements d'état de connexion par rapport à IoT Core. IoT Core détermine qu'un appareil est déconnecté soit dès qu'il reçoit une demande de déconnexion de la part de l'appareil, soit lorsqu'un appareil se déconnecte sans envoyer de demande de déconnexion. IoT Core attendra 1,5 fois la durée de conservation configurée avant que le client ne soit déterminé comme étant déconnecté. L'API d'état de la connectivité reflète ces changements, généralement moins d'une seconde après qu'IoT Core a déterminé le changement d'état de connexion d'un appareil.
-
Débit élevé : prend en charge 350 transactions par seconde (TPS) par défaut et peut être ajusté à un niveau supérieur sur demande.
-
Conservation des données : stocke les données des événements indéfiniment lorsque le ConnectivityIndexing mode Fleet Indexing (FI) est activé et que l'objet n'est pas supprimé. Si vous désactivez l'indexation de connectivité, les enregistrements ne seront pas conservés.
Note
Si l'indexation de l'état de la connectivité était activée avant le lancement de cette API, Fleet Indexing commence à suivre les modifications de l'état de la connectivité après le lancement de l'API et reflète l'état mis à jour en fonction de ces modifications.
Conditions préalables
Pour utiliser la prise en charge des requêtes de connectivité des appareils :
-
Intégrez et enregistrez des appareils AWS IoT Core dans votre région préférée
-
Activez l'indexation de la flotte avec l'indexation de la connectivité. Facultatif : Opt-in pour recevoir des informations sur le niveau du socket en activant l'
includeSocketInformationoption.
Note
Aucune configuration supplémentaire n'est requise si l'indexation de la connectivité est déjà activée.
Pour obtenir des instructions de configuration détaillées, consultez le Guide du AWS IoT développeur
Exemple
Commande CLI :
aws iot get-thing-connectivity-data --include-socket-information --thing-name myThingName
Réponse :
{ "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" }
Paramètres de l'API
-
thingName: nom de l'appareil enregistré dans le AWS IoT registre. Cela doit correspondre à celuiclientIdutilisé pour se connecter à AWS IoT Core. -
includeSocketInformation: leincludeSocketInformationparamètre contrôle si les informations réseau au niveau du socket sont incluses dans la réponse de l'API. Lorsqu'elle est définie sur true, la réponse inclut les champs suivants :sourceIp, sourcePort, targetIp, targetPort, vpcEndpointId. Lorsqu'il n'includeSocketInformationest pas spécifié ou défini sur False, ces champs de socket sont exclus de la réponse. Pour empêcher des utilisateurs IAM spécifiques d'accéder aux informations des sockets, vous devez le spécifier dans leur politique IAM en définissant la clé deincludeSocketInformationcondition sur false.
Champs de réponse
-
thingName: nom de l'appareil enregistré dans le AWS IoT registre. Cela doit correspondre à celuiclientIdutilisé pour se connecter à AWS IoT Core. -
connected: valeur booléenne true indiquant que cet appareil est actuellement connecté. -
disconnectReason: Motif de la déconnexion. SeraNONEdestiné à un appareil connecté etUNKNOWNà un appareil qui n'a jamais été connecté. Pour un appareil déconnecté, cela indiquera si la déconnexion a été initiée par le client, par le serveur, en raison de authentication/authorization problèmes ou de problèmes réseau. Pour les codes de motif de déconnexion, voir LifeCycleEvents -
timestamp: horodatage représentant l'événement de connexion ou de déconnexion le plus récent de l'appareil. -
clientId: L'ID client du client MQTT. -
keepAliveDuration: intervalle de maintien en vie en secondes que le client a spécifié lors de l'établissement de la connexion. Cela détermine la fréquence à laquelle le client envoie des messages de maintien en activité pour maintenir la connexion. -
cleanSession: indique si le client utilise une session vierge. -
sessionExpiry: configuration d'expiration de session persistante spécifiée par le client lors de l'établissement de la connexion. Cela détermine la durée pendant laquelle une session restera active après la déconnexion du client. -
sourceIp: adresse IP du client qui a initié la connexion. Renvoyé uniquement si cette valeurincludeSocketInformationest définie sur true et si l'utilisateur est autorisé à récupérer ces informations. -
sourcePort: numéro de port utilisé par le client pour la connexion. Renvoyé uniquement si cette valeurincludeSocketInformationest définie sur true et si l'utilisateur est autorisé à récupérer ces informations. -
targetIp: adresse IP à laquelle la demande de connexion a été faite. Renvoyé uniquement si cette valeurincludeSocketInformationest définie sur true et si l'utilisateur est autorisé à récupérer ces informations -
targetPort: numéro de port du terminal AWS IoT Core auquel le client s'est connecté. Renvoyé uniquement si cette valeurincludeSocketInformationest définie sur true et si l'utilisateur est autorisé à récupérer ces informations. -
vpcEndpointId: ID du point de terminaison VPC via lequel le client s'est connecté, le cas échéant. Renvoyé uniquement si cette valeurincludeSocketInformationest définie sur true et si l'utilisateur est autorisé à récupérer ces informations.
Autorisations nécessaires
Pour utiliser l' GetThingConnectivityData API, vous devez disposer de l'autorisation IAM suivante
iot:GetThingConnectivityData
Vous pouvez étendre cette autorisation à des éléments spécifiques à l'aide de politiques basées sur les ressources. Utilisez iot:IncludeSocketInformation cette condition pour implémenter un contrôle d'accès granulaire sur les informations du socket. L'exemple de politique ci-dessous illustre un scénario dans lequel vous refusez à l'utilisateur l'accès aux informations du socket. Veuillez noter que cet exemple fonctionne lorsqu'il s'agit de la seule politique donnant accès à l'action GetThingConnectivityData.
Exemples de politiques d'autorisation
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:GetThingConnectivityData" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:thing/*"], "Condition": { "Bool": { "iot:IncludeSocketInformation": "false" } } }] }