

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AWS IoT Fehlerbehebung bei Befehlen
<a name="commands-troubleshooting"></a>

Dies ist der Abschnitt zur Fehlerbehebung für AWS IoT Device Management Befehle.

## Probleme bei der Befehlsausführung
<a name="commands-execution-troubleshooting"></a>

**Die Befehlsausführung bleibt im Status CREATED**  
Wenn die Befehlsausführung im `CREATED` Status verbleibt und nicht in einen anderen Status übergeht, sollten Sie Folgendes beachten: `IN_PROGRESS`  
+ Stellen Sie sicher, dass das Gerät mit AWS IoT Core verbunden ist und das Thema zur Befehlsanfrage abonniert hat.
+ Vergewissern Sie sich, dass die Geräterichtlinie dies zulässt, `iot:Subscribe` und zwar im `iot:Receive` Thema Befehlsanfrage und im `iot:Publish` Thema Befehlsantwort.
+ Wenn das Gerät offline ist und persistente MQTT-Sitzungen verwendet, wartet der Befehl bei AWS IoT Core. Wenn das Gerät vor Ablauf des persistenten Sitzungstimeouts und des Ausführungstimeouts erneut eine Verbindung herstellt, kann es den Befehl verarbeiten. Wenn das Ausführungstimeout abläuft, wechselt die Ausführung zu. `TIMED_OUT`

**DataConflict Fehler bei UpdateCommandExecution**  
Ein `DataConflict` Fehler tritt auf, wenn mehrere `UpdateCommandExecution` Anfragen parallel oder innerhalb eines kurzen Zeitraums an den Dienst gestellt werden (z. B. unmittelbar `IN_PROGRESS` gefolgt von`SUCCEEDED`).  
So beheben Sie dieses Problem  
+ Abonnieren Sie die Themen `/accepted` und `/rejected` Antworten, um zu überprüfen, ob jede Statusmeldung verarbeitet wurde, bevor Sie die nächste senden.
+ Implementieren Sie eine Wiederholungslogik mit exponentiellem Backoff beim Empfang von Fehlern. `DataConflict`

**Befehlsausführungen wechseln unerwartet in den Terminalstatus TIMED\_OUT**  
Wenn die Ausführung eines Befehls zu einem Zeitpunkt übergeht, `TIMED_OUT` bevor das Gerät ihn verarbeiten kann:  
+ Überprüfen Sie den für die Befehlsausführung konfigurierten Timeout-Wert. Das Standard-Timeout ist möglicherweise zu kurz für Ihren Anwendungsfall.
+ Wenn das Gerät beim Senden des Befehls offline war, vergewissern Sie sich, dass das Gerät erneut eine Verbindung hergestellt und die Ausführungsanforderung erhalten hat, bevor das Timeout abgelaufen ist.
+ Ein von der Cloud initiierter Vorgang `TIMED_OUT` ist kein Terminal. Das Gerät kann die Ausführung trotzdem auf einen Terminalstatus (`SUCCEEDED`, `FAILED``REJECTED`, oder`TIMED_OUT`) aktualisieren.
Ein vom Gerät initiiertes Gerät `TIMED_OUT` ist ein Terminalstatus, und es können keine weiteren Aktualisierungen an dieser Befehlsausführung vorgenommen werden.

**Wie kann ich Fehler in CloudWatch Protokollen anzeigen?**  
Fehler aus der `UpdateCommandExecution` MQTT-Anfrage werden in der `AWSIoTLogsV2` Protokollgruppe in Amazon CloudWatch protokolliert. Informationen zum Aktivieren der Protokollierung und zum Anzeigen der Protokolle finden Sie unter[Konfiguration AWS IoT Protokollierung](configure-logging.md).

## UpdateCommandExecution Fehlercodes
<a name="commands-error-codes"></a>

Wenn die `UpdateCommandExecution` MQTT-Anfrage fehlschlägt, veröffentlicht der Dienst eine Fehlerantwort zu dem `/rejected` Thema. Die Fehlerantwort enthält einen Fehlercode und eine Meldung. In der folgenden Tabelle sind die Fehlercodes aufgeführt, die zurückgegeben werden können.


| Fehlercode | Wiederholbar | Description | 
| --- | --- | --- | 
| InvalidStateTransition | Nein | Der angeforderte Statusübergang ist nicht zulässig. Zum Beispiel der Übergang von SUCCEEDED zu IN\_PROGRESS oder die Aktualisierung einer vom Gerät initiierten Ausführung. TIMED\_OUT | 
| TerminalStateReached | Nein | Die Befehlsausführung hat bereits einen Terminalstatus erreicht und kann nicht aktualisiert werden. | 
| ResourceNotFound | Nein | Die angegebene Befehlsausführung ist nicht vorhanden. | 
| DataConflict | Ja | Die Befehlsausführung wurde gleichzeitig geändert. Dies kann der Fall sein, wenn Statusaktualisierungen schnell hintereinander gesendet werden. Abonnieren Sie die Themen /accepted und /rejected Antworten, um zu überprüfen, ob jede Statusmeldung verarbeitet wurde, bevor Sie die nächste versenden. Weitere Informationen finden Sie unter [DataConflict Fehler am UpdateCommandExecution](#commands-execution-troubleshooting). | 
| InternalError | Ja | Es ist ein interner Serverfehler aufgetreten. Wiederholen Sie die Anfrage mit exponentiellem Backoff. | 

Im Folgenden finden Sie ein Beispiel für eine zu diesem Thema veröffentlichte Fehlerantwort: `/rejected`

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