

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.

# Demandes d'état de connectivité de l'appareil
<a name="device-connectivity-status"></a>

AWS IoT Fleet Indexing prend en charge les requêtes de connectivité individuelles des appareils, ce qui vous permet de récupérer efficacement l'état de 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 du parc.

## Comment ça marche
<a name="w2aac37c21b5"></a>

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 à faible latence et à haut débit aux informations de connectivité spécifiques aux appareils les plus récentes. Une fois que vous aurez activé l'indexation de connectivité, vous aurez accès à cette API de requête qui sera facturée en tant que requêtes standard. Pour plus d'informations, consultez la section [Tarification de la gestion des AWS IoT appareils](https://aws.amazon.com/iot-device-management/pricing/#:~:text=Search%20queries%20(per%2010%2C000%20queries))

## Caractéristiques
<a name="w2aac37c21b7"></a>

Grâce à la prise en charge des requêtes relatives à la connectivité des appareils, vous pouvez :

1. Recherchez l'état de connectivité actuel (connecté ou déconnecté) d'un appareil donné à l'aide de son`thingName`.

1. Récupérez des métadonnées de connectivité supplémentaires, notamment :

   1. Raison de la déconnexion

   1. Horodatage de l'événement de connexion ou de déconnexion le plus récent.

   1. Informations sur la session, y compris la durée de conservation

   1. Informations de session au niveau du socket, notamment l'adresse IP, le port et l'ID du point de terminaison VPC. Ces informations ne sont disponibles que lorsque les conditions suivantes sont remplies :

      1. Vous activez cette option dans les paramètres de configuration de l'indexation du parc.

      1. Vous disposez de l'autorisation correspondante dans la politique IAM lorsque vous appelez l'API.

**Note**  
[L'indexation de flotte indexe l'état de connectivité d'un appareil dont la connexion `clientId` est identique à celle `thingName` d'un objet enregistré dans le registre ](https://docs.aws.amazon.com/iot/latest/developerguide/thing-registry.html). 

## Avantages
<a name="w2aac37c21b9"></a>

1. **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 depuis 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 dans le cas où un appareil se déconnecte sans envoyer de demande de déconnexion. Le cœur de l'IoT attendra 1,5 fois le temps de maintien en vie configuré avant qu'il soit déterminé que le client est déconnecté. L'API d'état de la connectivité reflétera ces changements généralement moins d'une seconde après que IoT Core ait déterminé le changement d'état de connexion d'un appareil.

1. **Haut débit :** prend en charge 350 transactions par seconde (TPS) par défaut et peut être ajusté à un niveau supérieur sur demande.

1. **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 connectivité a été activée avant le lancement de cette API, Fleet Indexing commence à suivre les modifications de l'état de connectivité après le lancement de l'API et reflète le statut mis à jour en fonction de ces modifications.

## Conditions préalables
<a name="w2aac37c21c11"></a>

Pour utiliser la prise en charge des requêtes de connectivité de l'appareil :

1. [Configurez un AWS compte](https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html)

1. Intégrez et enregistrez les appareils AWS IoT Core dans votre région préférée

1. [Activez l'indexation de la flotte grâce à l'](https://docs.aws.amazon.com/iot/latest/developerguide/managing-index.html)indexation de la connectivité. Facultatif : Opt-in pour recevoir des informations au niveau du socket en activant l'`includeSocketInformation`option.

**Note**  
Aucune configuration supplémentaire n'est requise si l'indexation de connectivité est déjà activée.

Pour des instructions de configuration détaillées, reportez-vous au [guide du AWS IoT développeur](https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html)

## Exemple
<a name="w2aac37c21c13"></a>

**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 à celui `clientId` utilisé pour se connecter à AWS IoT Core.
+ `includeSocketInformation`: Le `includeSocketInformation` paramè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'`includeSocketInformation`est pas spécifié ou défini sur false, ces champs de socket sont exclus de la réponse. Pour empêcher certains utilisateurs IAM d'accéder aux informations du socket, vous devez le spécifier dans leur politique IAM en définissant la clé de `includeSocketInformation` condition sur False. 

**Champs de réponse** 
+ `thingName`: nom de l'appareil enregistré dans le AWS IoT registre. Cela doit correspondre à celui `clientId` utilisé pour se connecter à AWS IoT Core.
+ `connected`: valeur booléenne vraie indiquant que cet appareil est actuellement connecté.
+ `disconnectReason`: Motif de la déconnexion. Ce sera `NONE` pour un appareil connecté et `UNKNOWN` pour un appareil qui n'a jamais été connecté. Pour un appareil déconnecté, cela indique si la déconnexion a été initiée par le client, par le serveur, en raison de authentication/authorization problèmes ou en raison de problèmes de réseau. Pour les codes de motif de déconnexion, voir [LifeCycleEvents ](https://docs.aws.amazon.com//iot/latest/developerguide/life-cycle-events.html)
+ `timestamp`: horodatage représentant le dernier événement de connexion ou de déconnexion de l'appareil.
+ `clientId`: ClientiD du client MQTT. 
+ `keepAliveDuration`: intervalle de maintien en secondes spécifié par le client lors de l'établissement de la connexion. Cela détermine la fréquence à laquelle le client envoie des messages de maintien en vie pour maintenir la connexion. 
+ `cleanSession`: indique si le client utilise une session propre. 
+ `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. Renvoie uniquement si la valeur `includeSocketInformation` est définie sur true et si l'utilisateur est autorisé à récupérer ces informations. 
+ `sourcePort`: le numéro de port utilisé par le client pour la connexion. Renvoie uniquement si la valeur `includeSocketInformation` est 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é envoyée. Renvoyé uniquement s'`includeSocketInformation`il est défini sur true et si l'utilisateur est autorisé à récupérer ces informations 
+ `targetPort`: numéro de port du point de terminaison AWS IoT Core auquel le client s'est connecté. Renvoie uniquement si la valeur `includeSocketInformation` est 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. Renvoie uniquement si la valeur `includeSocketInformation` est 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 autorisant l'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" 
      } 
    } 
  }] 
}
```