

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
<a name="commands-troubleshooting"></a>

Esta é a seção de solução de problemas para AWS IoT Device Management Comandos.

## Problemas de execução de comandos
<a name="commands-execution-troubleshooting"></a>

**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 por`SUCCEEDED`).  
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`, ou`TIMED_OUT`).
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, consulte[Configurar o AWS IoT registro](configure-logging.md).

## UpdateCommandExecution códigos de erro
<a name="commands-error-codes"></a>

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](#commands-execution-troubleshooting). | 
| 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"
}
```