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
CREATEDestado y no pasa aIN_PROGRESSotro 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:Subscribeyiot: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 la ejecución caduca, la ejecución pasa a.
TIMED_OUT
-
- DataConflict error activado 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/rejectedresponda 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_OUTantes 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_OUTno 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_OUTes 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
UpdateCommandExecutionMQTT se registran en el grupo deAWSIoTLogsV2registros 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" }