As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AWS IoT Solução de problemas de comandos
Esta é a seção de solução de problemas para AWS IoT Device Management Comandos.
Problemas de execução de comandos
- A execução do comando permanece no status CREATED
-
Quando a execução de um comando permanece no
CREATEDstatus e não prossegueIN_PROGRESSpara outro status, considere o seguinte:-
Verifique se o dispositivo está conectado ao AWS IoT Core e se inscreveu no tópico de solicitação de comandos.
-
Verifique se a política do dispositivo permite
iot:Subscribeeiot:Receiveno tópico de solicitação de comandos eiot:Publishno tópico de resposta de comandos. -
Se o dispositivo estiver off-line e usar sessões persistentes do MQTT, o comando aguardará no AWS IoT Core. Quando o dispositivo se reconecta antes do tempo limite persistente da sessão e do tempo limite de execução, ele pode processar o comando. Se o tempo limite de execução expirar, a execução passará para.
TIMED_OUT
-
- DataConflict erro em UpdateCommandExecution
-
Um
DataConflicterro ocorre quando váriasUpdateCommandExecutionsolicitações são feitas ao serviço em paralelo ou em um curto espaço de tempo (por exemplo,IN_PROGRESSseguidas imediatamente porSUCCEEDED).Para resolver esse problema:
-
Inscreva-se nos tópicos
/acceptede/rejectedresponda para confirmar que cada atualização de status foi processada antes de enviar a próxima. -
Implemente a lógica de repetição com recuo exponencial ao receber erros.
DataConflict
-
- As execuções de comandos passam para um status de terminal TIMED_OUT inesperadamente
-
Quando a execução de um comando é transferida para
TIMED_OUTantes que o dispositivo possa processá-lo:-
Revise o valor do tempo limite configurado para a execução do comando. O tempo limite padrão pode ser muito curto para seu caso de uso.
-
Se o dispositivo estava off-line quando o comando foi enviado, verifique se ele se reconectou e recebeu a solicitação de execução antes que o tempo limite expirasse.
-
Uma nuvem iniciada não
TIMED_OUTé terminal. O dispositivo ainda pode atualizar a execução para um status de terminal (SUCCEEDED,FAILED,REJECTED, ouTIMED_OUT).
nota
Um dispositivo iniciado
TIMED_OUTé um status de terminal e nenhuma atualização adicional pode ser feita na execução desse comando. -
- Como faço para ver os erros nos CloudWatch registros?
-
Os erros da solicitação
UpdateCommandExecutionMQTT são registrados no grupo deAWSIoTLogsV2registros na Amazon. CloudWatch Para ativar o registro e visualizar os registros, consulteConfigurar o AWS IoT registro.
UpdateCommandExecution códigos de erro
Quando a solicitação UpdateCommandExecution MQTT falha, o serviço publica uma resposta de erro ao /rejected tópico. A resposta de erro contém um código e uma mensagem de erro. A tabela a seguir lista os códigos de erro que podem ser retornados.
| Código de erro | Com nova tentativa | Description |
|---|---|---|
InvalidStateTransition |
Não | A transição de status solicitada não é permitida. Por exemplo, fazer a transição de SUCCEEDED paraIN_PROGRESS, atualizar uma execução iniciada pelo dispositivoTIMED_OUT. |
TerminalStateReached |
Não | A execução do comando já atingiu um estado terminal e não pode ser atualizada. |
ResourceNotFound |
Não | A execução do comando especificado não existe. |
DataConflict |
Sim | A execução do comando foi modificada simultaneamente. Isso pode ocorrer quando as atualizações de status são enviadas em rápida sucessão. Inscreva-se nos tópicos /accepted e /rejected responda para confirmar que cada atualização de status foi processada antes de enviar a próxima. Para obter mais detalhes, consulte o DataConflict erro em UpdateCommandExecution. |
InternalError |
Sim | Ocorreu um erro interno do servidor. Repita a solicitação com um recuo exponencial. |
Veja a seguir um exemplo de uma resposta de erro publicada no /rejected tópico:
{ "clientToken": "client-token-1", "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554", "error": "DataConflict", "errorMessage": "The command execution was modified concurrently" }