View a markdown version of this page

AWS IoT Solução de problemas de comandos - AWS IoT Core

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 CREATED status e não prossegue IN_PROGRESS para 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:Subscribe e iot:Receive no tópico de solicitação de comandos e iot:Publish no 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 DataConflict erro ocorre quando várias UpdateCommandExecution solicitações são feitas ao serviço em paralelo ou em um curto espaço de tempo (por exemplo, IN_PROGRESS seguidas imediatamente porSUCCEEDED).

Para resolver esse problema:

  • 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.

  • 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_OUT antes 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 UpdateCommandExecution MQTT são registrados no grupo de AWSIoTLogsV2 registros 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" }