

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Consultas de estado de conectividad de los dispositivos
<a name="device-connectivity-status"></a>

AWS IoT La indexación de flotas admite consultas de conectividad de dispositivos individuales, lo que le permite recuperar de manera eficiente el estado de la conectividad y los metadatos relacionados para dispositivos específicos. Esta característica complementa las capacidades de indexación y consulta existentes en toda la flota.

## Funcionamiento
<a name="w2aac37c21b5"></a>

La compatibilidad con las consultas de conectividad de los dispositivos se puede utilizar para recuperar de forma optimizada el estado de la conectividad de un solo dispositivo. Esta API proporciona acceso de baja latencia y alto rendimiento a la información de conectividad específica del dispositivo más reciente. Una vez que habilite la indexación de conectividad, tendrá acceso a esta API de consultas, que se cobrará como consultas estándar. Para obtener más información, consulte [Precios de AWS IoT Device Management](https://aws.amazon.com/iot-device-management/pricing/#:~:text=Search%20queries%20(per%2010%2C000%20queries)).

## Características
<a name="w2aac37c21b7"></a>

Gracias a la compatibilidad con las consultas de conectividad de los dispositivos, puede:

1. Consultar el estado de conectividad actual (conectado o desconectado) de un dispositivo determinado mediante su `thingName`.

1. Recuperar metadatos de conectividad adicionales, como, por ejemplo:

   1. Motivo de desconexión

   1. Marcas de tiempo de los eventos de conexión o desconexión más recientes.

   1. Información de la sesión, incluida la duración de la sesión

   1. Información de sesión a nivel de socket, incluida la dirección IP, el puerto y el ID de punto final de la VPC. Esta información solo está disponible cuando se cumplen las siguientes condiciones:

      1. Esta opción se activa en los ajustes de configuración de indexación de la flota.

      1. Dispones del permiso correspondiente en la política de IAM al invocar la API.

**nota**  
La indexación de flotas indexa el estado de conectividad de un dispositivo cuya conexión `clientId` es la misma que la `thingName` de un dispositivo registrado en el [Registro](https://docs.aws.amazon.com/iot/latest/developerguide/thing-registry.html). 

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

1. **Baja latencia:** refleja el estado de conectividad del dispositivo más reciente y ofrece una latencia baja para reflejar los cambios en el estado de la conexión con respecto a IoT Core. IoT Core determina que un dispositivo está desconectado en cuanto recibe una solicitud de desconexión del dispositivo o en caso de que un dispositivo se desconecte sin enviar una solicitud de desconexión. IoT Core esperará 1,5 veces el tiempo de keep-alive configurado antes de que se determine que el cliente está desconectado. La API de estado de conectividad reflejará estos cambios normalmente en menos de un segundo después de que IoT Core determine el cambio de estado de conexión de un dispositivo.

1. **Alto rendimiento:** admite 350 transacciones por segundo (TPS) de forma predeterminada y se puede ajustar en un nivel superior si se solicita.

1. **Retención de datos:** almacena los datos de los eventos de forma indefinida cuando el ConnectivityIndexing modo de indexación de flotas (FI) está activado y el elemento no se elimina. Si deshabilita la opción Indexación de conectividad, los registros no se conservarán.

**nota**  
Si la indexación del estado de la conectividad estaba habilitada antes del lanzamiento de esta API, la opción Indexación de flotas comienza a realizar un seguimiento de los cambios en el estado de la conectividad después del lanzamiento de la API y refleja el estado actualizado en función de esos cambios.

## Requisitos previos
<a name="w2aac37c21c11"></a>

Cómo utilizar el soporte de consultas sobre conectividad de dispositivos:

1. [Configura una cuenta AWS](https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html)

1. Incorpora y registra dispositivos AWS IoT Core en la región que prefieras

1. [Habilite la indexación de flotas con la](https://docs.aws.amazon.com/iot/latest/developerguide/managing-index.html) indexación de conectividad. Opcional: Opt-in para recibir información sobre el nivel de enchufe activando la `includeSocketInformation` opción.

**nota**  
No se requiere ninguna configuración adicional si ya tiene habilitada la indexación de conectividad.

Para obtener instrucciones detalladas de configuración, consulte la [Guía para desarrolladores de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html).

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

**Comando CLI:**

```
aws iot get-thing-connectivity-data --include-socket-information --thing-name myThingName
```

**Respuesta**:

```
{
   "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"
}
```

**Parámetros de API** 
+ `thingName`: el nombre del dispositivo registrado en el AWS IoT registro. Debe coincidir con el `clientId` utilizado para conectarse a AWS IoT Core.
+ `includeSocketInformation`: El `includeSocketInformation` parámetro controla si la información de red a nivel de socket se incluye en la respuesta de la API. Si se establece en true, la respuesta incluye los siguientes campos:. `sourceIp, sourcePort, targetIp, targetPort, vpcEndpointId` Cuando no `includeSocketInformation` se especifica o se establece en falso, estos campos de socket se excluyen de la respuesta. Para impedir que usuarios específicos de IAM accedan a la información de los sockets, tendrá que especificarlo en su política de IAM configurando la clave de `includeSocketInformation` condición como falsa 

**Campos de respuesta** 
+ `thingName`: el nombre del dispositivo registrado en AWS IoT el Registro. Debe coincidir con el `clientId` utilizado para conectarse a AWS IoT Core.
+ `connected`: el valor booleano true indica que este dispositivo está conectado actualmente.
+ `disconnectReason`: motivo de la desconexión. Será `NONE` para un dispositivo conectado y `UNKNOWN` para un dispositivo que nunca se ha conectado. En el caso de un dispositivo desconectado, esto indicará si la desconexión fue iniciada por el cliente o por el servidor, debido a authentication/authorization problemas o a problemas de red. Para ver los códigos de motivo de desconexión, consulte [LifeCycleEvents ](https://docs.aws.amazon.com//iot/latest/developerguide/life-cycle-events.html)
+ `timestamp`: La marca de tiempo que representa el evento de conexión o desconexión más reciente del dispositivo.
+ `clientId`: El ClientiD del cliente MQTT. 
+ `keepAliveDuration`: El intervalo de mantenimiento en segundos que el cliente especificó al establecer la conexión. Esto determina la frecuencia con la que el cliente envía mensajes de mantenimiento activo para mantener la conexión. 
+ `cleanSession`: Indica si el cliente está utilizando una sesión limpia. 
+ `sessionExpiry`: La configuración de caducidad de la sesión persistente que el cliente especificó al establecer la conexión. Esto determina cuánto tiempo permanecerá activa una sesión después de que el cliente se desconecte. 
+ `sourceIp`: la dirección IP del cliente que inició la conexión. Solo se devuelve si `includeSocketInformation` se establece como verdadera y el usuario está autorizado a recuperar esta información. 
+ `sourcePort`: el número de puerto utilizado por el cliente para la conexión. Solo se devuelve si `includeSocketInformation` se establece como verdadero y el usuario está autorizado a recuperar esta información. 
+ `targetIp`: la dirección IP a la que se realizó la solicitud de conexión. Solo se devuelve si `includeSocketInformation` se establece como verdadera y el usuario está autorizado a recuperar esta información 
+ `targetPort`: el número de puerto del punto final de AWS IoT Core al que se conectó el cliente. Solo se devuelve si `includeSocketInformation` se establece como verdadero y el usuario está autorizado a recuperar esta información. 
+ `vpcEndpointId`: el ID del punto final de la VPC a través del cual se conectó el cliente, si corresponde. Solo se devuelve si `includeSocketInformation` se establece como verdadero y el usuario está autorizado a recuperar esta información. 

**Permisos necesarios**

 Para usar la GetThingConnectivityData API, necesitas el siguiente permiso de IAM 

`iot:GetThingConnectivityData`

 Puedes aplicar este permiso a aspectos específicos mediante políticas basadas en recursos. Utilice la `iot:IncludeSocketInformation` condición para implementar un control de acceso detallado a la información de los sockets. El siguiente ejemplo de política muestra un escenario en el que se niega al usuario el acceso a la información de los sockets. Ten en cuenta que este ejemplo funciona cuando es la única política que permite el acceso a la acción GetThingConnectivityData. 

**Ejemplos de políticas de autorización**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [ 
  { 
    "Effect": "Allow",
    "Action": [ "iot:GetThingConnectivityData" ],
    "Resource": [ "arn:aws:iot:us-east-1:123456789012:thing/*"],
    "Condition": { 
      "Bool": { 
        "iot:IncludeSocketInformation": "false" 
      } 
    } 
  }] 
}
```