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 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 permiteiot: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 deSUCCEEDED).

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, FAILEDREJECTED, oTIMED_OUT).

nota

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, consulteConfigure el AWS IoT registro.

UpdateCommandExecution códigos de error

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 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.
InternalError 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" }