

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.

# AWS IoT Solución de problemas de comandos
<a name="commands-troubleshooting"></a>

Esta es la sección de solución de problemas de AWS IoT Device Management los comandos.

## Problemas de ejecución de comandos
<a name="commands-execution-troubleshooting"></a>

**La ejecución del comando permanece en el estado CREADO**  
Cuando la ejecución de un comando permanece en `CREATED` estado y no pasa a `IN_PROGRESS` otro estado, tenga en cuenta lo siguiente:  
+ Compruebe que el dispositivo esté conectado a AWS IoT Core y esté suscrito al tema de solicitud de comandos.
+ Compruebe si la política del dispositivo lo permite`iot:Subscribe`, `iot:Receive` en el tema de solicitud de comandos y `iot:Publish` en el tema de respuesta de comandos.
+ Si el dispositivo está desconectado y usa sesiones persistentes de MQTT, el comando espera en AWS IoT Core. Cuando el dispositivo se vuelve a conectar antes de que se agote el tiempo de espera de la sesión persistente y de la ejecución, puede procesar el comando. Si el tiempo de espera de ejecución expira, la ejecución pasa a. `TIMED_OUT`

**DataConflict error en UpdateCommandExecution**  
Se produce un `DataConflict` error cuando se realizan varias `UpdateCommandExecution` solicitudes al servicio en paralelo o en un período breve (por ejemplo, `IN_PROGRESS` seguidas inmediatamente de`SUCCEEDED`).  
Para resolver este problema, siga estos pasos:  
+ Suscríbase a los temas `/accepted` y a los temas de `/rejected` respuesta para confirmar que cada actualización de estado se procesó antes de enviar la siguiente.
+ Implemente una lógica de reintento con un retraso exponencial cuando reciba errores. `DataConflict`

**Las ejecuciones de comandos pasan a un estado de terminal TIMED\_OUT de forma inesperada**  
Cuando la ejecución de un comando pasa a ser `TIMED_OUT` anterior a que el dispositivo pueda procesarlo:  
+ Revise el valor de tiempo de espera configurado para la ejecución del comando. Es posible que el tiempo de espera predeterminado sea demasiado corto para su caso de uso.
+ Si el dispositivo estaba desconectado cuando se envió el comando, compruebe que se haya vuelto a conectar y haya recibido la solicitud de ejecución antes de que se agote el tiempo de espera.
+ Un dispositivo iniciado en la nube `TIMED_OUT` no es un terminal. El dispositivo aún puede actualizar la ejecución a un estado de terminal (`SUCCEEDED`, `FAILED``REJECTED`, o`TIMED_OUT`).
Un dispositivo iniciado `TIMED_OUT` es un estado de terminal y no se pueden realizar más actualizaciones en la ejecución de este comando.

**¿Cómo puedo ver los errores en CloudWatch los registros?**  
Los errores de la solicitud `UpdateCommandExecution` MQTT se registran en el grupo de `AWSIoTLogsV2` registros de Amazon CloudWatch. Para habilitar el registro y ver los registros, consulte[Configure el AWS IoT registro](configure-logging.md).

## UpdateCommandExecution códigos de error
<a name="commands-error-codes"></a>

Cuando se produce un error en la solicitud de `UpdateCommandExecution` MQTT, el servicio publica una respuesta de error al `/rejected` tema. La respuesta de error contiene un código y un mensaje de error. En la siguiente tabla se enumeran los códigos de error que se pueden devolver.


| Código de error | Reintentable | Description (Descripción) | 
| --- | --- | --- | 
| InvalidStateTransition | No | No se permite la transición de estado solicitada. Por ejemplo, pasar de SUCCEEDED a actualizar una ejecución IN\_PROGRESS iniciada por el dispositivo. TIMED\_OUT | 
| TerminalStateReached | No | La ejecución del comando ya ha alcanzado un estado terminal y no se puede actualizar. | 
| ResourceNotFound | No | La ejecución del comando especificada no existe. | 
| DataConflict | Sí | La ejecución del comando se modificó simultáneamente. Esto puede ocurrir cuando las actualizaciones de estado se envían en rápida sucesión. Suscríbase a los temas /accepted y a los temas de /rejected respuesta para confirmar que cada actualización de estado se procesó antes de enviar la siguiente. Para obtener más información, consulta [DataConflict el error en UpdateCommandExecution](#commands-execution-troubleshooting). | 
| InternalError | Sí | Se ha producido un error interno del servidor. Vuelva a intentar la solicitud con un retraso exponencial. | 

A continuación, se muestra un ejemplo de una respuesta de error publicada en el tema: `/rejected`

```
{
    "clientToken": "client-token-1",
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "error": "DataConflict",
    "errorMessage": "The command execution was modified concurrently"
}
```