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
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
- L'exécution de la commande reste à l'état CREATED
-
Lorsqu'une exécution de commande conserve
CREATEDson statut et ne passe pas àIN_PROGRESSun autre état, prenez en compte les 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:Subscribeetiot:Receivesur la rubrique Demande de commandes etiot:Publishsur la rubrique Réponse aux commandes. -
Si l'appareil est hors ligne et utilise des sessions persistantes MQTT, la commande est en attente sur AWS IoT Core. Lorsque l'appareil se reconnecte avant l'expiration persistante de la session 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
DataConflicterreur se produit lorsque plusieursUpdateCommandExecutiondemandes sont adressées au service en parallèle ou dans un court laps de temps (par exempleIN_PROGRESS, immédiatementSUCCEEDED).Pour résoudre ce problème :
-
Abonnez-vous aux rubriques
/acceptedet/rejectedrépondez 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 lors de la réception d'erreurs.
DataConflict
-
- Les exécutions de commandes passent à l'état de terminal TIMED_OUT de manière inattendue
-
Lorsqu'une commande est exécutée
TIMED_OUTavant 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 au moment de l'envoi de la commande, 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 objet initié par le cloud
TIMED_OUTn'est pas un terminal. L'appareil peut toujours mettre à jour l'exécution vers un statut de terminal (SUCCEEDEDFAILED,REJECTED, ouTIMED_OUT).
Note
Un appareil lancé
TIMED_OUTest un état de terminal et aucune autre mise à jour ne peut être apportée à cette exécution de commande. -
- Comment puis-je consulter les erreurs dans les CloudWatch journaux ?
-
Les erreurs provenant de la requête
UpdateCommandExecutionMQTT sont enregistrées dans le groupe deAWSIoTLogsV2journaux d'Amazon CloudWatch. Pour activer la journalisation et consulter les journaux, consultezConfigurer AWS IoT journalisation.
UpdateCommandExecution codes d'erreur
Lorsque la requête UpdateCommandExecution MQTT échoue, le service publie une réponse d'erreur à la /rejected rubrique. La réponse d'erreur contient un code et un message d'erreur. 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 l'appareil. 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 la 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 répondez 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. |
InternalError |
Oui | Une erreur interne du serveur s’est produite. Réessayez la demande avec un délai d'attente exponentiel. |
Voici un exemple de réponse d'erreur publiée sur la /rejected rubrique :
{ "clientToken": "client-token-1", "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554", "error": "DataConflict", "errorMessage": "The command execution was modified concurrently" }