

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS IoT Dépannage des commandes
<a name="commands-troubleshooting"></a>

Il s'agit de la section de résolution des problèmes pour AWS IoT Device Management les commandes.

## Problèmes d'exécution des commandes
<a name="commands-execution-troubleshooting"></a>

**L'exécution de la commande reste dans le statut CREATED**  
Lorsqu'une exécution de commande conserve le `CREATED` statut et ne passe pas à `IN_PROGRESS` un autre état, tenez compte des points suivants :  
+ Vérifiez que l'appareil est connecté à AWS IoT Core et qu'il est abonné à la rubrique de demande de commandes.
+ Vérifiez que la politique de l'appareil le permet `iot:Subscribe` et `iot:Receive` sur le sujet des demandes de commandes et `iot:Publish` sur le sujet des réponses aux commandes.
+ Si l'appareil est hors ligne et utilise des sessions persistantes MQTT, la commande attend dans AWS IoT Core. Lorsque l'appareil se reconnecte avant le délai d'expiration de la session persistante et le délai d'exécution, il peut traiter la commande. Si le délai d'exécution expire, l'exécution passe à`TIMED_OUT`.

**DataConflict erreur sur UpdateCommandExecution**  
Une `DataConflict` erreur se produit lorsque plusieurs `UpdateCommandExecution` demandes sont adressées au service en parallèle ou dans un court laps de temps (par exemple, `IN_PROGRESS` suivies immédiatement par`SUCCEEDED`).  
Pour résoudre ce problème :  
+ Abonnez-vous aux rubriques `/accepted` et `/rejected` aux réponses pour confirmer que chaque mise à jour de statut a été traitée avant d'envoyer la suivante.
+ Implémentez une logique de nouvelle tentative avec un retard exponentiel en cas d'erreur. `DataConflict`

**Les exécutions de commandes passent inopinément au statut de terminal TIMED\_OUT**  
Lorsqu'une commande est exécutée `TIMED_OUT` avant que le périphérique ne puisse la traiter :  
+ Vérifiez la valeur du délai d'attente configurée pour l'exécution de la commande. Le délai d'expiration par défaut est peut-être trop court pour votre cas d'utilisation.
+ Si l'appareil était hors ligne lorsque la commande a été envoyée, vérifiez qu'il s'est reconnecté et qu'il a reçu la demande d'exécution avant l'expiration du délai imparti.
+ Un système initié par le cloud `TIMED_OUT` n'est pas un terminal. L'appareil peut toujours mettre à jour l'exécution à l'état du terminal (`SUCCEEDED``FAILED`,`REJECTED`, ou`TIMED_OUT`).
Une commande initiée par un appareil `TIMED_OUT` est un statut de terminal et aucune autre mise à jour ne peut être apportée à l'exécution de cette commande.

**Comment puis-je consulter les erreurs dans les CloudWatch journaux ?**  
Les erreurs liées à la demande `UpdateCommandExecution` MQTT sont enregistrées dans le groupe de `AWSIoTLogsV2` journaux d'Amazon CloudWatch. Pour activer la journalisation et consulter les journaux, consultez[Configuration de la AWS IoT journalisation](configure-logging.md).

## UpdateCommandExecution codes d'erreur
<a name="commands-error-codes"></a>

Lorsque la demande `UpdateCommandExecution` MQTT échoue, le service publie une réponse d'erreur à la `/rejected` rubrique. La réponse d'erreur contient un code d'erreur et un message. Le tableau suivant répertorie les codes d'erreur qui peuvent être renvoyés.


| Code d’erreur | Récupérable | Description | 
| --- | --- | --- | 
| InvalidStateTransition | Non | La transition de statut demandée n'est pas autorisée. Par exemple, passer de à, mettre SUCCEEDED à jour une IN\_PROGRESS exécution initiée par le périphérique. TIMED\_OUT | 
| TerminalStateReached | Non | L'exécution de la commande a déjà atteint un état terminal et ne peut pas être mise à jour. | 
| ResourceNotFound | Non | L'exécution de commande spécifiée n'existe pas. | 
| DataConflict | Oui | L'exécution de la commande a été modifiée simultanément. Cela peut se produire lorsque des mises à jour de statut sont envoyées en succession rapide. Abonnez-vous aux rubriques /accepted et /rejected aux réponses pour confirmer que chaque mise à jour de statut a été traitée avant d'envoyer la suivante. Pour plus de détails, consultez la section [DataConflict Erreur sur UpdateCommandExecution](#commands-execution-troubleshooting). | 
| InternalError | Oui | Une erreur interne du serveur s’est produite. Réessayez la demande avec un retard exponentiel. | 

Voici un exemple de réponse d'erreur publiée dans le `/rejected` sujet :

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