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
Questa è la sezione relativa alla risoluzione dei problemi relativi ai AWS IoT Device Management comandi.
Problemi di esecuzione dei comandi
- L'esecuzione del comando rimane nello stato CREATED
-
Quando l'esecuzione di un comando rimane nello
CREATEDstato e non passa aIN_PROGRESSuno 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:Subscribeeiot:Receivesull'argomento relativo alla richiesta dei comandi e all'argomentoiot:Publishrelativo 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
DataConflicterrore quando vengono effettuate piùUpdateCommandExecutionrichieste al servizio in parallelo o entro un breve periodo di tempo (ad esempio,IN_PROGRESSseguite immediatamente daSUCCEEDED).Per risolvere il problema:
-
Iscriviti agli argomenti
/acceptede/rejectedrispondi 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_OUTnon è terminale. Il dispositivo può comunque aggiornare l'esecuzione allo stato di un terminale (SUCCEEDED,,FAILED,REJECTEDo).TIMED_OUT
Nota
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
UpdateCommandExecutionMQTT vengono registrati nel gruppo diAWSIoTLogsV2log in Amazon. CloudWatch Per abilitare la registrazione e visualizzare i log, consulta. Configurare la registrazione AWS IoT
UpdateCommandExecution codici di errore
Quando la richiesta UpdateCommandExecution MQTT ha esito negativo, il servizio pubblica una risposta di errore all'/rejectedargomento. 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. |
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" }