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 Comandi e risoluzione dei problemi
Questa è la sezione relativa alla risoluzione dei problemi relativi ai AWS IoT Device Management comandi.
Problemi relativi all'esecuzione dei comandi
- L'esecuzione del comando rimane nello stato CREATED
-
Quando l'esecuzione di un comando rimane nello
CREATEDstato e non procede versoIN_PROGRESSun altro stato, considera quanto segue:-
Verifica che il dispositivo sia connesso a AWS IoT Core e sia iscritto all'argomento relativo alla richiesta dei comandi.
-
Verifica che la politica del dispositivo lo
iot:Receiveconsentaiot:Subscribee nell'argomento della richiesta deiiot:Publishcomandi e nell'argomento della risposta ai comandi. -
Se il dispositivo è offline e utilizza sessioni permanenti MQTT, il comando attende in Core. AWS IoT 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 attivo UpdateCommandExecution
-
Si verifica un
DataConflicterrore quando vengono effettuate piùUpdateCommandExecutionrichieste al servizio in parallelo o in un breve lasso di tempo (ad esempio,IN_PROGRESSseguite immediatamente daSUCCEEDED).Per risolvere il problema:
-
Iscriviti agli argomenti
/acceptede alle/rejectedrisposte 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 del 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 sistema avviato dal cloud non è un terminale
TIMED_OUT. Il dispositivo può comunque aggiornare l'esecuzione allo stato di terminale (SUCCEEDED,FAILED,REJECTEDo).TIMED_OUT
Nota
Uno stato avviato dal dispositivo
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 derivanti dalla richiesta
UpdateCommandExecutionMQTT vengono registrati nel gruppo diAWSIoTLogsV2log di Amazon. CloudWatch Per abilitare la registrazione e visualizzare i log, consulta. Configura AWS IoT logging
UpdateCommandExecution codici di errore
Quando la richiesta UpdateCommandExecution MQTT fallisce, il servizio pubblica una risposta di errore sull'argomento. /rejected La risposta all'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 specificata 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 alle /rejected risposte per confermare che ogni aggiornamento di 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" }