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 dans le statut CREATED
-
Lorsqu'une exécution de commande conserve le
CREATEDstatut et ne passe pas àIN_PROGRESSun 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:Subscribeetiot:Receivesur le sujet des demandes de commandes etiot:Publishsur 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
DataConflicterreur se produit lorsque plusieursUpdateCommandExecutiondemandes sont adressées au service en parallèle ou dans un court laps de temps (par exemple,IN_PROGRESSsuivies immédiatement parSUCCEEDED).Pour résoudre ce problème :
-
Abonnez-vous aux rubriques
/acceptedet/rejectedaux 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_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 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_OUTn'est pas un terminal. L'appareil peut toujours mettre à jour l'exécution à l'état du terminal (SUCCEEDEDFAILED,REJECTED, ouTIMED_OUT).
Note
Une commande initiée par un appareil
TIMED_OUTest 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
UpdateCommandExecutionMQTT sont enregistrées dans le groupe deAWSIoTLogsV2journaux d'Amazon CloudWatch. Pour activer la journalisation et consulter les journaux, consultezConfiguration de la AWS IoT journalisation.
UpdateCommandExecution codes d'erreur
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. |
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" }