

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.

# Workflow de commandes de haut niveau
<a name="iot-remote-command-workflow"></a>

Ce flux de travail montre comment les appareils interagissent avec AWS IoT Device Management les commandes. Toutes les demandes d'API HTTP utilisent les [informations d'identification Sigv4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) pour la signature.

![\[Vue d'ensemble du flux de travail de haut niveau relatif aux commandes des AWS IoT Device Management appareils.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/device-command-workflow.png)


**Topics**
+ [Création et gestion de commandes](#command-create-command)
+ [Choisissez l'appareil cible pour vos commandes et abonnez-vous aux rubriques MQTT](#command-choose-target)
+ [Démarrez et surveillez les exécutions de commandes pour votre appareil cible](#command-command-executions)
+ [(Facultatif) Activer les notifications pour les événements liés aux commandes](#iot-remote-command-commands-notifications)

## Création et gestion de commandes
<a name="command-create-command"></a>

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 à partir du [Command Hub](https://console.aws.amazon.com/iot/home#/commandHub) ou à l'aide de l'[https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)API.

1. 

**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.

1. 

**(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
<a name="command-choose-target"></a>

Choisissez votre appareil cible et configurez les sujets 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](iot-remote-command-execution-start-monitor.md#iot-command-execution-target).

1. 

**Configuration de la politique de AWS IoT l'appareil**

   Configurez une politique IAM octroyant des autorisations pour recevoir des exécutions et publier des mises à jour. Voir [Exemple de politique IAM](iot-remote-command-execution-start-monitor.md#iot-remote-command-execution-update-policy) pour des exemples de politiques.

1. 

**Établir 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:Connect`une autorisation. Trouvez le point de terminaison de votre plan de données à l'aide de l'`DescribeEndpoint`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
   ```

1. 

**S'abonner aux rubriques relatives aux commandes**

   Abonnez-vous à la rubrique des demandes de commandes. Lorsque vous lancez 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 (`accepted`ou`rejected`) pour recevoir la confirmation si 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 unique du client MQTT ou un nom d'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'obtenir les informations de format MQTT5 à partir des en-têtes de message MQTT. Pour de plus amples informations, veuillez consulter [Rubriques relatives aux commandes](reserved-topics.md#reserved-topics-commands).

   ```
   $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
<a name="command-command-executions"></a>

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

1. 

**Lancer l'exécution de la commande sur le périphérique cible**

   Démarrez l'exécution depuis le [hub de commande](https://console.aws.amazon.com/iot/home#/commandHub) ou en utilisant l'`StartCommandExecution`API avec le point de terminaison spécifique à votre compte. À utiliser `iot:Data-ATS` pour une pile double (IPv4/IPv6) ou IPv4 uniquement `iot:Jobs` pour.

   L'API publie la charge utile dans la rubrique de demande de commandes.
**Note**  
Si le périphérique 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 imparti, 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.

1. 

**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 le sujet 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 du client MQTT.
**Note**  
Il ne *<PayloadFormat>* peut s'agir que de JSON ou CBOR dans la rubrique de réponse aux commandes.

   ```
   $aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
   ```

1. 

**(Facultatif) Récupère le résultat de l'exécution de la commande**

   Récupérez les résultats de l'exécution depuis AWS IoT la console ou en utilisant`GetCommandExecution`. L'appareil doit publier les résultats dans la rubrique de réponse aux commandes pour obtenir les informations les plus récentes. Consultez des informations supplémentaires, notamment l'heure de la dernière mise à jour, le résultat et l'heure d'achèvement.

## (Facultatif) Activer les notifications pour les événements liés aux commandes
<a name="iot-remote-command-commands-notifications"></a>

Abonnez-vous aux événements Commands pour recevoir des notifications lorsque le statut 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](command-events.md).

1. 

**Créer une règle de rubrique**

   Abonnez-vous à la rubrique des événements relatifs aux commandes pour recevoir des notifications de changement de statut. Créez une règle thématique pour acheminer les données des appareils vers d'autres AWS IoT services tels AWS Lambda qu'Amazon SQS et AWS Step Functions à l'aide de la AWS IoT console ou. [Création d'une AWS IoT règle](iot-create-rule.md)

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

   ```
   $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
   ```
**Note**  
Pour recevoir des notifications concernant toutes les commandes et les statuts d'exécution des commandes, vous pouvez utiliser des caractères génériques et vous abonner à la rubrique suivante.

   ```
   $aws/events/commandExecution/+/#
   ```

1. 

**Réception et traitement des é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 montre un exemple de charge utile pour les notifications d'événements de commande 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
}
```