Événements du cycle de vie - AWS IoT Core

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.

Événements du cycle de vie

AWS IoT peut publier les événements du cycle de vie sur les MQTT sujets. Ces événements sont disponibles par défaut et ne peuvent pas être désactivés.

Note

Les messages de cycle de vie peuvent être envoyés dans le désordre. Vous pouvez recevoir des messages en double.

thingNamene sera inclus que si le client se connecte à l'aide de la fonction d'objet exclusif.

Événements de connexion/déconnexion

Note

Grâce à AWS IoT l'indexation du parc Device Management, vous pouvez rechercher des objets, exécuter des requêtes agrégées et créer des groupes dynamiques en fonction des événements de connexion/déconnexion des objets. Pour plus d’informations,veuillez consulter consultez la rubrique Fleet indexing.

AWS IoT publie un message dans les MQTT rubriques suivantes lorsqu'un client se connecte ou se déconnecte :

  • $aws/events/presence/connected/clientId – Un client connecté à l’agent de messages.

  • $aws/events/presence/disconnected/clientId – un client déconnecté de l’agent de messages.

Vous trouverez ci-dessous une liste des JSON éléments contenus dans les messages de connexion/déconnexion publiés dans le sujet. $aws/events/presence/connected/clientId

clientId

ID du client qui se connecte ou se déconnecte.

Note

Les clients IDs contenant # ou + ne reçoivent aucun événement du cycle de vie.

thingName

Le nom de votre outil IoT. thingNamene sera inclus que si le client se connecte à l'aide de la fonction d'objet exclusif.

clientInitiatedDisconnect

True si le client est à l'origine de la déconnexion. Sinon, la valeur renvoyée est Faux. Figurant uniquement dans les messages de déconnexion.

disconnectReason

La raison pour laquelle le client se déconnecte. Figurant uniquement dans les messages de déconnexion. Le tableau suivant contient des valeurs valides et indique si le courtier enverra des messages Last Will and Testament (LWT) lors de la déconnexion.

Raison de la déconnexion Description Le courtier enverra les LWT messages
AUTH_ERROR Le client n'a pas pu s'authentifier ou l'autorisation a échoué. Oui. Si l'appareil dispose d'une connexion active avant de recevoir cette erreur.
CLIENT_INITIATED_DISCONNECT Le client indique qu'il va se déconnecter. Le client peut le faire en envoyant un paquet de MQTT DISCONNECT contrôle ou un Close frame s'il utilise une WebSocket connexion. Non
CLIENT_ERROR Le client a réalisé une erreur qui a provoqué sa déconnexion. Par exemple, un client sera déconnecté s'il envoie plus d'un MQTT CONNECT paquet sur la même connexion ou s'il tente de publier avec une charge utile supérieure à la limite de charge utile. Oui.
CONNECTION_LOST La connexion client-serveur est coupée. Cela peut se produire pendant une période de latence réseau élevée ou lorsque la connexion Internet est perdue. Oui.
DUPLICATE_CLIENTID Le client emploie un ID client déjà utilisé. Dans ce cas, le client déjà connecté sera déconnecté avec cette raison de déconnexion. Oui.
FORBIDDEN_ACCESS Le client n'est pas autorisé à être connecté. Par exemple, un client avec une adresse IP refusée échouera à se connecter. Oui. Si l'appareil dispose d'une connexion active avant de recevoir cette erreur.
MQTT_KEEP_ALIVE_TIMEOUT S'il n'y a pas de communication client-serveur pour 1.5x le temps de maintien de la connexion du client, le client est déconnecté. Oui.
SERVER_ERROR Déconnecté en raison de problèmes de serveur inattendus. Oui.
SERVER_INITIATED_DISCONNECT Le serveur déconnecte intentionnellement un client pour des raisons opérationnelles. Oui.
THROTTLED Le client est déconnecté en raison du dépassement d'une limite de limitation. Oui.
WEBSOCKET_TTL_EXPIRATION Le client est déconnecté car WebSocket a est connecté depuis plus longtemps que sa time-to-live valeur. Oui.
CUSTOMAUTH_TTL_EXPIRATION Le client est déconnecté car il est connecté depuis plus longtemps que la time-to-live valeur de son autorisateur personnalisé. Oui.
eventType

Type d'événement. Les valeurs valides sont connected ou disconnected.

ipAddress

Adresse IP du client de connexion. Cela peut être au IPv6 format IPv4 ou au format. Figurant uniquement dans les messages de connexion.

principalIdentifier

Informations d'identification utilisées pour l'authentification. Pour les certificats d'authentification TLS mutuelle, il s'agit de l'ID du certificat. Pour les autres connexions, ce sont les informations d'identification IAM.

sessionIdentifier

Un identifiant unique au monde AWS IoT qui existe pendant toute la durée de la session.

timestamp

Une approximation du moment où l'événement s'est produit.

versionNumber

Numéro de version de l'événement de cycle de vie. Il s'agit d'un entier qui augmente de façon monotone pour chaque connexion d'ID client. Le numéro de version peut être utilisé par un abonné afin de déduire l'ordre des événements de cycle de vie.

Note

Les messages de connexion et de déconnexion d'une connexion de client ont le même numéro de version.

Le numéro de version peut ignorer des valeurs ; il n'est pas garanti qu'il augmentera uniformément de 1 à chaque événement.

Si un client n'est pas connecté pendant une heure environ, le numéro de version est réinitialisé à 0. Pour les sessions persistantes, le numéro de version est remis à 0 après qu'un client a été déconnecté plus longtemps que le nombre configuré time-to-live (TTL) pour la session persistante.

Un message de connexion présente la structure suivante.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }

Un message de déconnexion présente la structure suivante.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }

Gestion des déconnexions du client

La meilleure pratique consiste à toujours implémenter un état d'attente pour les événements du cycle de vie, y compris les messages Last Will and Testament (LWT). À réception d'un message de déconnexion, votre code doit déclencher un délai d'attente et vérifier si un appareil est toujours hors ligne avant de prendre des mesures. Pour ce faire, vous pouvez utiliser SQS les files d'attente. Lorsqu'un client reçoit un événement LWT ou un événement du cycle de vie, vous pouvez mettre un message en file d'attente (par exemple, pendant 5 secondes). Lorsque ce message est disponible et traité (par Lambda ou un autre service), vous pouvez commencer par vérifier si l'appareil est toujours hors connexion avant de prendre d'autres mesures.

Événement d'échec de tentative de connexion

AWS IoT publie un message dans la MQTT rubrique suivante lorsqu'un client n'est pas autorisé à se connecter ou lorsqu'un dernier testament est configuré et que le client n'est pas autorisé à publier sur cette rubrique testamentaire.

$aws/events/presence/connect_failed/clientId

Vous trouverez ci-dessous une liste des JSON éléments contenus dans les messages d'autorisation de connexion publiés dans le $aws/events/presence/connect_failed/clientId sujet.

clientId

ID client du client qui a tenté de se connecter sans succès.

Note

Les clients IDs contenant # ou + ne reçoivent aucun événement du cycle de vie.

thingName

Le nom de votre outil IoT. thingNamene sera inclus que si le client se connecte à l'aide de la fonction d'objet exclusif.

timestamp

Une approximation du moment où l'événement s'est produit.

eventType

Type d'événement. La valeur valide estconnect_failed.

connectFailureReason

La raison pour laquelle la connexion échoue. La valeur valide estAUTHORIZATION_FAILED.

principalIdentifier

Informations d'identification utilisées pour l'authentification. Pour les certificats d'authentification TLS mutuelle, il s'agit de l'ID du certificat. Pour les autres connexions, ce sont les informations d'identification IAM.

sessionIdentifier

Un identifiant unique au monde AWS IoT qui existe pendant toute la durée de la session.

ipAddress

Adresse IP du client de connexion. Cela peut être au IPv6 format IPv4 ou au format. Figurant uniquement dans les messages de connexion.

La structure d'un message d'échec de connexion est la suivante.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "connect_failed", "connectFailureReason": "AUTHORIZATION_FAILED", "principalIdentifier": "12345678901234567890123456789012", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "ipAddress" : "192.0.2.0" }

Événements d'abonnement/désabonnement

AWS IoT publie un message dans la MQTT rubrique suivante lorsqu'un client s'abonne ou se désabonne à une rubrique : MQTT

$aws/events/subscriptions/subscribed/clientId

or

$aws/events/subscriptions/unsubscribed/clientId

Où se clientId trouve l'ID MQTT client qui se connecte au courtier de AWS IoT messages.

Le message publié sur cette rubrique a la structure suivante :

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "topics" : ["foo/bar","device/data","dog/cat"] }

Vous trouverez ci-dessous une liste des JSON éléments contenus dans les messages abonnés et désabonnés publiés dans les $aws/events/subscriptions/unsubscribed/clientId rubriques $aws/events/subscriptions/subscribed/clientId et.

clientId

ID du client qui s'abonne ou se désabonne.

Note

Les clients IDs contenant # ou + ne reçoivent aucun événement du cycle de vie.

thingName

Le nom de votre outil IoT. thingNamene sera inclus que si le client se connecte à l'aide de la fonction d'objet exclusif.

eventType

Type d'événement. Les valeurs valides sont subscribed ou unsubscribed.

principalIdentifier

Informations d'identification utilisées pour l'authentification. Pour les certificats d'authentification TLS mutuelle, il s'agit de l'ID du certificat. Pour les autres connexions, ce sont les informations d'identification IAM.

sessionIdentifier

Un identifiant unique au monde AWS IoT qui existe pendant toute la durée de la session.

timestamp

Une approximation du moment où l'événement s'est produit.

topics

Tableau des MQTT sujets auxquels le client s'est abonné.

Note

Les messages de cycle de vie peuvent être envoyés dans le désordre. Vous pouvez recevoir des messages en double.