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
CREATEDestado y no pasa aIN_PROGRESSotro 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:Receiveen el tema de solicitud de comandos yiot:Publishen 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
DataConflicterror cuando se realizan variasUpdateCommandExecutionsolicitudes al servicio en paralelo o en un período breve (por ejemplo,IN_PROGRESSseguidas inmediatamente deSUCCEEDED).Para resolver este problema, siga estos pasos:
-
Suscríbase a los temas
/acceptedy a los temas de/rejectedrespuesta 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_OUTanterior 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_OUTno 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_OUTes 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
UpdateCommandExecutionMQTT se registran en el grupo deAWSIoTLogsV2registros 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 |
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. |
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" }