View a markdown version of this page

AWS IoT Solución de problemas de comandos - AWS IoT Core

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

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

Problemas de ejecución de comandos

La ejecución del comando permanece en 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:

  • Comprueba que el dispositivo esté conectado al AWS IoT Core y que se haya suscrito al tema de solicitud de comandos.

  • Comprueba que la política del dispositivo lo permita iot:Subscribe y 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 la ejecución caduca, la ejecución pasa a. TIMED_OUT

DataConflict error activado 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 deSUCCEEDED).

Para resolver este problema, siga estos pasos:

  • Suscríbase a los temas /accepted y /rejected responda para confirmar que se procesó cada actualización de estado antes de enviar la siguiente.

  • Implemente la lógica de reintentos con un retroceso exponencial cuando reciba errores. DataConflict

Las ejecuciones de comandos pasan inesperadamente al estado de la terminal TIMED_OUT

Cuando la ejecución de un comando pasa a estar TIMED_OUT antes de 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, verifica 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 terminal. El dispositivo aún puede actualizar la ejecución a un estado terminal (SUCCEEDED, FAILEDREJECTED, oTIMED_OUT).

nota

Un estado iniciado por el dispositivo TIMED_OUT es un estado del 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 de UpdateCommandExecution MQTT se registran en el grupo de AWSIoTLogsV2 registros de Amazon CloudWatch. Para habilitar el registro y ver los registros, consulteConfiguración AWS IoT registrar.

UpdateCommandExecution códigos de error

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

Código de error Reintentable Description (Descripción)
InvalidStateTransition No La transición de estado solicitada no está permitida. Por ejemplo, pasar de SUCCEEDED a o 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 /rejected respuestas para confirmar que se procesó cada actualización de estado antes de enviar la siguiente. Para obtener más información, consulta DataConflict el artículo error activado UpdateCommandExecution.
InternalError Sí Se ha producido un error interno del servidor. Vuelva a intentar la solicitud con un retraso exponencial.

El siguiente es 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" }