

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# AWS IoT Risoluzione dei problemi dei comandi
<a name="commands-troubleshooting"></a>

Questa è la sezione relativa alla risoluzione dei problemi relativi ai AWS IoT Device Management comandi.

## Problemi di esecuzione dei comandi
<a name="commands-execution-troubleshooting"></a>

**L'esecuzione del comando rimane nello stato CREATED**  
Quando l'esecuzione di un comando rimane nello `CREATED` stato e non passa a `IN_PROGRESS` uno stato diverso, considera quanto segue:  
+ Verifica che il dispositivo sia connesso a AWS IoT Core e abbia sottoscritto l'argomento relativo alla richiesta dei comandi.
+ Verifica che la politica del dispositivo lo consenta `iot:Subscribe` e `iot:Receive` sull'argomento relativo alla richiesta dei comandi e all'argomento `iot:Publish` relativo alla risposta ai comandi.
+ Se il dispositivo è offline e utilizza sessioni permanenti MQTT, il comando attende in AWS IoT Core. Quando il dispositivo si riconnette prima del timeout persistente della sessione e del timeout di esecuzione, può elaborare il comando. Se il timeout di esecuzione scade, l'esecuzione passa a. `TIMED_OUT`

**DataConflict errore su UpdateCommandExecution**  
Si verifica un `DataConflict` errore quando vengono effettuate più `UpdateCommandExecution` richieste al servizio in parallelo o entro un breve periodo di tempo (ad esempio, `IN_PROGRESS` seguite immediatamente da`SUCCEEDED`).  
Per risolvere il problema:  
+ Iscriviti agli argomenti `/accepted` e `/rejected` rispondi per confermare che ogni aggiornamento di stato è stato elaborato prima di inviare quello successivo.
+ Implementa la logica dei tentativi con backoff esponenziale in caso di ricezione di errori. `DataConflict`

**Le esecuzioni dei comandi passano allo stato di terminale TIMED\_OUT in modo imprevisto**  
Quando l'esecuzione di un comando passa a prima che il dispositivo possa elaborarlo`TIMED_OUT`:  
+ Rivedi il valore di timeout configurato per l'esecuzione del comando. Il timeout predefinito potrebbe essere troppo breve per il tuo caso d'uso.
+ Se il dispositivo era offline al momento dell'invio del comando, verifica che il dispositivo si sia ricollegato e abbia ricevuto la richiesta di esecuzione prima della scadenza del timeout.
+ Un file avviato dal cloud `TIMED_OUT` non è terminale. Il dispositivo può comunque aggiornare l'esecuzione allo stato di un terminale (`SUCCEEDED`,,`FAILED`, `REJECTED` o). `TIMED_OUT`
Un dispositivo avviato `TIMED_OUT` è uno stato del terminale e non è possibile apportare ulteriori aggiornamenti all'esecuzione di questo comando.

**Come posso visualizzare gli errori nei log? CloudWatch **  
Gli errori della richiesta `UpdateCommandExecution` MQTT vengono registrati nel gruppo di `AWSIoTLogsV2` log in Amazon. CloudWatch Per abilitare la registrazione e visualizzare i log, consulta. [Configurare la registrazione AWS IoT](configure-logging.md)

## UpdateCommandExecution codici di errore
<a name="commands-error-codes"></a>

Quando la richiesta `UpdateCommandExecution` MQTT ha esito negativo, il servizio pubblica una risposta di errore all'`/rejected`argomento. La risposta di errore contiene un codice e un messaggio di errore. La tabella seguente elenca i codici di errore che possono essere restituiti.


| Codice di errore | Non irreversibile | Description | 
| --- | --- | --- | 
| InvalidStateTransition | No | La transizione di stato richiesta non è consentita. Ad esempio, la transizione da SUCCEEDED aIN\_PROGRESS, l'aggiornamento di un'esecuzione avviata dal dispositivoTIMED\_OUT. | 
| TerminalStateReached | No | L'esecuzione del comando ha già raggiunto lo stato terminale e non può essere aggiornata. | 
| ResourceNotFound | No | L'esecuzione del comando specificato non esiste. | 
| DataConflict | Sì | L'esecuzione del comando è stata modificata contemporaneamente. Ciò può verificarsi quando gli aggiornamenti di stato vengono inviati in rapida successione. Iscriviti agli argomenti /accepted e /rejected rispondi per confermare che ogni aggiornamento allo stato è stato elaborato prima di inviare quello successivo. Per maggiori dettagli, vedi [DataConflict error on UpdateCommandExecution](#commands-execution-troubleshooting). | 
| InternalError | Sì | Si è verificato un errore interno del server. Riprova la richiesta con un backoff esponenziale. | 

Di seguito è riportato un esempio di risposta di errore pubblicata sull'argomento: `/rejected`

```
{
    "clientToken": "client-token-1",
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "error": "DataConflict",
    "errorMessage": "The command execution was modified concurrently"
}
```