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 des événements du cycle de vie sur les sujets MQTT. 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.
Dans cette rubrique :
É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 rubriques MQTT suivantes lorsqu'un client se connecte ou se déconnecte :
-
$aws/events/presence/connected/
– Un client connecté à l’agent de messages.clientId
-
$aws/events/presence/disconnected/
– un client déconnecté de l’agent de messages.clientId
Voici une liste d'éléments JSON qui sont contenus dans les messages de connexion/déconnexion publiés dans la rubrique $aws/events/presence/connected/
.clientId
- clientId
-
ID du client qui se connecte ou se déconnecte.
Note
Les ID des clients qui contiennent des # ou + ne reçoivent pas les événements de cycle de vie.
- client InitiatedDisconnect
-
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) lorsque la déconnexion se produit.
Raison de la déconnexion Description Le courtier enverra les messages LWT 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 DISCONNECT
contrôle MQTT ou un paquetClose 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é pour avoir envoyé plus d'un paquet CONNECT
MQTT sur la même connexion ou pour avoir tenté de publier avec une charge utile supérieure à la limite de cette dernière.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
oudisconnected
. - ipAddress
-
Adresse IP du client de connexion. Elle peut être au format IPv4 ou IPv6. Figurant uniquement dans les messages de connexion.
- principalIdentifier
-
Informations d'identification utilisées pour l'authentification. Pour les certificats d'authentification mutuelle TLS, 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 délai configuré time-to-live (TTL) pour la session persistante.
Un message de connexion présente la structure suivante.
{ "clientId": "186b5", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "a4666d2a7d844ae4ac5d7b38c9cb7967", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }
Un message de déconnexion présente la structure suivante.
{ "clientId": "186b5", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "a4666d2a7d844ae4ac5d7b38c9cb7967", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }
Gestion des déconnexions du client
Les bonnes pratiques consistent à toujours implémenter un état d'attente pour les événements du cycle de vie, notamment avec des messages LWT (Last Will and Testament). À 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 des files d'attente à retardement SQS. Lorsqu'un client reçoit un message LWT ou un événement de cycle de vie, vous pouvez mettre ce message en file d'attente (pendant 5 secondes, par exemple). 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énements d'abonnement/désabonnement
AWS IoT publie un message dans la rubrique MQTT 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ù clientId
est l'ID du client MQTT qui se connecte à l'agent de messages AWS IoT
.
Le message publié sur cette rubrique a la structure suivante :
{ "clientId": "186b5", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "000000000000/ABCDEFGHIJKLMNOPQRSTU:some-user/ABCDEFGHIJKLMNOPQRSTU:some-user", "topics" : ["foo/bar","device/data","dog/cat"] }
Voici une liste d'éléments JSON qui sont contenus dans les messages d'abonnement/désabonnement publiés dans les rubriques $aws/events/subscriptions/subscribed/
et clientId
$aws/events/subscriptions/unsubscribed/
.clientId
- clientId
-
ID du client qui s'abonne ou se désabonne.
Note
Les ID des clients qui contiennent des # ou + ne reçoivent pas les événements de cycle de vie.
- eventType
-
Type d'événement. Les valeurs valides sont
subscribed
ouunsubscribed
. - principalIdentifier
-
Informations d'identification utilisées pour l'authentification. Pour les certificats d'authentification mutuelle TLS, 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 sujets MQTT auquel 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.