View a markdown version of this page

High-level flux de travail des commandes - AWS IoT Core

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.

High-level flux de travail des commandes

Ce flux de travail montre comment les appareils interagissent avec AWS IoT Device Management les commandes. Toutes les demandes d'API HTTP utilisent des informations d'identification Sigv4 pour la signature.

Présentation du flux de travail de haut niveau relatif aux commandes de l' AWS IoT Device Management appareil.

Création et gestion de commandes

Pour créer et gérer des commandes pour vos appareils, effectuez les étapes suivantes.

  1. Création d'une ressource de commande

    Créez une commande depuis le Command Hub ou à l'aide de l'CreateCommandAPI.

  2. Spécifiez la charge utile

    Fournissez une charge utile dans n'importe quel format. Spécifiez le type de contenu pour garantir une interprétation correcte de l'appareil.

    Pour les commandes dynamiques avec des modèles de charge utile, la charge utile finale est générée au moment de l'exécution à l'aide des paramètres que vous avez fournis. Les modèles ne prennent en charge que le format JSON, mais la charge utile générée peut être envoyée au format JSON ou CBOR.

  3. (Facultatif) Gérez les commandes créées

    Mettez à jour le nom d'affichage et la description après la création. Marquez les commandes comme obsolètes lorsqu'elles ne sont plus nécessaires ou supprimez-les définitivement. Pour modifier les informations de charge utile, créez une nouvelle commande.

Choisissez l'appareil cible pour vos commandes et abonnez-vous aux rubriques MQTT

Choisissez votre appareil cible et configurez les rubriques MQTT pour recevoir des commandes et publier des réponses.

  1. Choisissez l'appareil cible pour votre commande

    Choisissez un équipement cible pour recevoir et exécuter la commande. Utilisez un nom d'objet pour les appareils enregistrés ou un ID client pour les appareils non enregistrés. Pour de plus amples informations, veuillez consulter Considérations relatives à l'appareil cible.

  2. Configurez le AWS IoT politique relative aux appareils

    Configurez une politique IAM accordant des autorisations pour recevoir des exécutions et publier des mises à jour. Voir Exemple de politique IAM des exemples de politiques.

  3. Etablir une connexion MQTT

    Connectez les appareils au courtier de messages et abonnez-vous aux rubriques de demande et de réponse. Les appareils ont besoin d'iot:Connectune autorisation. Trouvez le point de terminaison de votre plan de données à l'aide de DescribeEndpoint l'API ou de la commande describe-endpoint CLI :

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    L'exécution de cette commande renvoie le point de terminaison du plan de données spécifique au compte, comme indiqué ci-dessous.

    account-specific-prefix.iot.region.amazonaws.com
  4. Abonnez-vous aux rubriques relatives aux commandes

    Abonnez-vous à la rubrique de demande de commandes. Lorsque vous démarrez une exécution, le courtier de messages publie la charge utile dans cette rubrique. Votre appareil reçoit et traite la commande.

    (Facultatif) Abonnez-vous aux sujets de réponse (acceptedourejected) pour recevoir la confirmation que le service cloud a accepté ou rejeté la réponse de l'appareil.

    Dans cet exemple, remplacez :

    • <device>avec thing ou client selon que l'appareil que vous ciblez a été enregistré en tant qu'objet IoT ou spécifié en tant que client MQTT.

    • <DeviceID>avec l'identifiant unique de votre appareil cible. Cet identifiant peut être l'identifiant client MQTT unique ou le nom d'un objet.

    Note

    Si le type de charge utile n'est pas JSON ou CBOR, le <PayloadFormat> champ n'est peut-être pas présent dans la rubrique de demande de commandes. Pour obtenir le format de charge utile, nous vous recommandons d'utiliser MQTT5 pour obtenir les informations de format à partir des en-têtes de message MQTT. Pour de plus amples informations, veuillez consulter Rubriques relatives aux commandes.

    $aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat> $aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat> $aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat>

Démarrez et surveillez les exécutions de commandes pour votre appareil cible

Après avoir créé les commandes et spécifié les cibles de la commande, vous pouvez démarrer l'exécution sur la machine cible en effectuant les étapes suivantes.

  1. Lancer l'exécution de la commande sur l'appareil cible

    Démarrez l'exécution depuis le Command Hub ou en utilisant l'StartCommandExecutionAPI avec le point de terminaison spécifique à votre compte. À utiliser iot:Data-ATS pour Dual-Stack (IPv4/IPv6) ou iot:Jobs pour IPv4 uniquement.

    L'API publie la charge utile dans la rubrique de demande de commandes.

    Note

    Si l'appareil est hors ligne et utilise des sessions persistantes MQTT, la commande attend le courtier de messages. Lorsque l'appareil se reconnecte avant l'expiration du délai, il peut traiter la commande et publier les résultats. Si le délai expire, l'exécution expire et la charge utile sera supprimée.

  2. Mettre à jour le résultat de l'exécution de la commande

    L'appareil reçoit la charge utile, traite la commande, exécute les actions spécifiées et publie les résultats dans la rubrique de réponse aux commandes à l'aide d'une API basée sur UpdateCommandExecution MQTT. S'il est abonné à des sujets acceptés et rejetés, l'appareil reçoit une confirmation indiquant si le service cloud a accepté ou rejeté la réponse.

    Selon ce que vous avez spécifié dans la rubrique de la demande, il <devices> peut s'agir d'objets ou de clients, et il <DeviceID> peut s'agir du nom de votre AWS IoT objet ou de l'ID client MQTT.

    Note

    Il ne <PayloadFormat> peut s'agir que de JSON ou de CBOR dans la rubrique de réponse aux commandes.

    $aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
  3. (Facultatif) Récupérez le résultat de l'exécution de la commande

    Récupérez les résultats de l'exécution depuis la AWS IoT console ou à l'aide deGetCommandExecution. L'appareil doit publier les résultats dans la rubrique de réponse aux commandes pour obtenir les dernières informations. Consultez des informations supplémentaires, notamment l'heure de la dernière mise à jour, le résultat et l'heure de fin.

(Facultatif) Activer les notifications pour les événements de commandes

Abonnez-vous aux événements Commandes pour recevoir des notifications lorsque l'état d'exécution change. Pour des informations détaillées sur les événements d'exécution de commandes, notamment le format du message d'événement et les attributs de charge utile, consultezÉvénements d'exécution de commandes.

  1. Créer une règle de rubrique

    Abonnez-vous à la rubrique relative aux événements relatifs aux commandes pour recevoir les notifications de changement de statut. Créez une règle thématique pour acheminer les données de l'appareil vers d'autres AWS IoT services tels AWS Lambda qu'Amazon SQS et AWS Step Functions à l'aide de la AWS IoT console ouCréation d'un AWS IoT règle.

    Dans cet exemple, remplacez <CommandID> par l'identifiant de la commande pour laquelle vous souhaitez recevoir des notifications et <CommandExecutionStatus> par l'état de l'exécution de la commande.

    $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
    Note

    Pour recevoir des notifications concernant toutes les commandes et leurs états d'exécution, vous pouvez utiliser des caractères génériques et vous abonner à la rubrique suivante.

    $aws/events/commandExecution/+/#
  2. Recevoir et traiter les événements liés aux commandes

    Gérez les notifications push des commandes et créez des applications à l'aide des événements souscrits.

Le code suivant présente un exemple de charge utile pour les notifications de commandes et d'événements que vous recevrez.

{ "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554", "status":"FAILED", "statusReason": { "reasonCode": "DEVICE_TOO_BUSY", "reasonDescription": "" }, "eventType": "COMMAND_EXECUTION", "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086", "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd", "timestamp":1717708862107 }