

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.

# Exemple : utilisation de commandes pour contrôler le mode de direction d'un véhicule (AWS CLI)
<a name="remote-command-tutorial"></a>

**Important**  
L'accès à certaines FleetWise fonctionnalités de AWS l'IoT est actuellement restreint. Pour de plus amples informations, veuillez consulter [AWS Disponibilité des régions et des fonctionnalités dans AWS l'IoT FleetWise](fleetwise-regions.md).

L'exemple suivant montre comment utiliser la fonctionnalité de commandes à l'aide du AWS CLI. Cet exemple utilise un AWS IoT FleetWise véhicule comme équipement cible pour montrer comment envoyer une commande pour contrôler à distance le mode de direction.

**Topics**
+ [Vue d'ensemble de l'exemple du mode de direction du véhicule](#iot-remote-command-tutorial-overview)
+ [Conditions préalables](#iot-remote-command-tutorial-prereq)
+ [Politique IAM pour l'utilisation des commandes à distance](#remote-command-policy)
+ [Exécuter AWS IoT des commandes (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Nettoyage](#remote-command-tutorial-clean)

## Vue d'ensemble de l'exemple du mode de direction du véhicule
<a name="iot-remote-command-tutorial-overview"></a>

Dans cet exemple, vous allez :

1. Créez une ressource de commande pour l'opération en utilisant le `create-command` AWS CLI pour modifier le mode de direction du véhicule.

1. Récupérez des informations sur la commande, telles que l'heure à laquelle elle a été créée ou mise à jour pour la dernière fois à l'aide du `get-command` AWS CLI.

1. Envoyez la commande au véhicule en utilisant le `start-command-execution` AWS CLI mode de direction comme paramètre obligatoire, qui sera ensuite exécutée sur l'appareil.

1. Obtenez le résultat de l'exécution de la commande à l'aide du `get-command-execution` AWS CLI. Vous pouvez vérifier quand l'exécution est terminée et récupérer des détails supplémentaires tels que le résultat de l'exécution et le temps nécessaire pour terminer l'exécution de la commande.

1. Effectuez des activités de nettoyage en supprimant les commandes et les exécutions de commandes que vous ne souhaitez plus utiliser.

## Conditions préalables
<a name="iot-remote-command-tutorial-prereq"></a>

Avant d'exécuter cet exemple :
+ Provisionnez votre AWS IoT FleetWise véhicule en tant qu' AWS IoT objet inscrit dans le AWS IoT registre. Vous devez également ajouter un certificat à votre objet, l'activer et associer une politique à votre objet. Votre appareil peut ensuite se connecter au cloud et exécuter les commandes. Pour plus d'informations, voir [Provisionner des véhicules](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Créez un utilisateur IAM et une politique IAM qui vous autorise à effectuer les opérations d'API pour utiliser des commandes, comme indiqué dans. [Politique IAM pour l'utilisation des commandes à distance](#remote-command-policy)

## Politique IAM pour l'utilisation des commandes à distance
<a name="remote-command-policy"></a>

Le tableau suivant présente un exemple de politique IAM qui accorde l'accès à toutes les opérations d'API du plan de contrôle et du plan de données pour la fonctionnalité de commandes. L'utilisateur de l'application sera autorisé à effectuer toutes les opérations de l'API de commande à distance, comme indiqué dans le tableau.


**Opération API**  

| Action d’API | Plan de contrôle/de données |  Protocole | Description | Ressource | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Plan de contrôle | HTTP | Crée une ressource de commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Plan de contrôle | HTTP | Récupère les informations relatives à une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Plan de contrôle | HTTP | Met à jour les informations relatives à une commande ou pour la rendre obsolète |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Plan de contrôle | HTTP | Répertorie les commandes de votre compte |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Plan de contrôle | HTTP | Supprime une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Plan de données | HTTP | Lance l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Plan de données | MQTT | Mettre à jour l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Plan de contrôle | HTTP | Récupère les informations relatives à l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Plan de contrôle | HTTP | Répertorie les exécutions de commandes dans votre compte |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Plan de contrôle | HTTP | Supprime l'exécution d'une commande |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

Dans cet exemple, remplacez :
+ `us-east-1`avec votre Région AWS, par exemple`ap-south-1`.
+ `111122223333`avec votre Compte AWS numéro, par exemple`57EXAMPLE833`.
+ `command-id``command-id1`, et `command-id2` avec votre identifiant de commande unique, tel que `LockDoor` ou`TurnOffAC`.
+ `thing-name`avec le nom de votre AWS IoT objet, tel que`my_car`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iot:CreateCommand",
                "iot:GetCommand",
                "iot:ListCommands",
                "iot:UpdateCommand",
                "iot:DeleteCommand"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id1",
                "arn:aws:iot:us-east-1:111122223333:command/command-id2"
            ]
        },
        {
            "Action": [
                "iot:GetCommandExecution",
                "iot:ListCommandExecutions",
                "iot:DeleteCommandExecution"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        },
        {
            "Action": "iot:StartCommandExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        }
    ]
}
```

------

## Exécuter AWS IoT des commandes (AWS CLI)
<a name="iot-remote-command-tutorial-run"></a>

Ce qui suit montre comment vous pouvez utiliser le AWS CLI pour exécuter des commandes et modifier le mode de direction du véhicule.

1. 

**Création d'une ressource de commande pour le fonctionnement du mode de direction**

   Créez la commande que vous souhaitez envoyer à votre appareil à l'aide de la `create-command` CLI. Dans cet exemple, spécifiez :
   + `command-id` comme *`TurnOffSteeringMode`*
   + `role-arn`car `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` le rôle IAM `role-arn` doit être fourni, car c'est le rôle IAM qui accorde les autorisations nécessaires pour créer et exécuter des commandes sur votre véhicule. Pour de plus amples informations, veuillez consulter [Accorder AWS IoT Device Management l'autorisation de générer la charge utile pour les commandes avec AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`sous la forme de « *`Turn off steering mode`* »
   + `namespace`doit être `AWS-IoT-FleetWise`
   + `mandatory-parameters`sous forme de paire nom-valeur, avec « *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode* » et DefaultValue `name` comme `{ "S": "true" }`
**Note**  
Vous pouvez également créer une commande sans spécifier de paramètres obligatoires. Vous devez ensuite spécifier les paramètres à utiliser lors de l'exécution de la commande à l'aide de la `start-command-execution` CLI. Pour obtenir un exemple, consultez [Scénarios d'utilisation des commandes](remote-command-use-cases.md).
**Important**  
Lorsque vous utilisez l'`AWS-IoT-FleetWise`espace de noms, vous devez vous assurer que le `Name` champ spécifié dans le cadre de celui-ci `mandatory-parameters` utilise le `$actuatorPath.` préfixe et que le `Value` champ doit utiliser le type de données chaîne.

   ```
   aws iot create-command \ 
       --command-id TurnOffSteeringMode \ 
       --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
       --display-name "Turn off steering mode" \ 
       --namespace AWS-IoT-FleetWise \
       --mandatory-parameters '[
         {
           "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
           "defaultValue": { "S": "true" }
         }
       ]'
   ```

   La sortie suivante montre un exemple de réponse de la CLI, où `ap-south-1` et `123456789012` sont des exemples de l' Compte AWS ID Région AWS and.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode"
   }
   ```

   Pour d'autres exemples d'utilisation de cette commande, consultez[Création d'une ressource de commande](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Récupérez les informations relatives à la commande**

   Exécutez la commande suivante pour récupérer des informations sur la commande, où se `command-id` trouve l'ID de commande dans le résultat de l'`create-command`opération ci-dessus.
**Note**  
Si vous créez plusieurs commandes, vous pouvez utiliser l'`ListCommands`API pour répertorier toutes les commandes de votre compte, puis utiliser l'`GetCommand`API pour obtenir des informations supplémentaires sur une commande spécifique. Pour de plus amples informations, veuillez consulter [Répertorier les commandes de votre compte](create-manage-remote-command-cli.md#list-remote-command-cli).

   ```
   aws iot get-command --command-id TurnOffSteeringMode
   ```

   L'exécution de cette commande génère la réponse suivante. Vous verrez l'heure à laquelle la commande a été créée et quand elle a été mise à jour pour la dernière fois, les paramètres que vous avez spécifiés et si la commande est disponible pour être exécutée sur l'appareil.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "namespace": "AWS-IoT-FleetWise",
       "mandatoryParameters":[
           {
               "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
               "defaultValue": {"S": "true" }
           }
       ],
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "lastUpdatedAt": "2024-03-23T00:50:10.095000-07:00",
       "deprecated": false
   }
   ```

   Pour d'autres exemples d'utilisation de cette commande, consultez[Récupérer les informations relatives à une commande](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Lancer l'exécution de la commande**

   Exécutez la commande suivante pour commencer à exécuter la commande, où se `command-arn` trouve l'ARN de la commande dans le résultat de l'`get-command`opération ci-dessus. `target-arn`Il s'agit de l'ARN de l'appareil cible pour lequel vous exécutez la commande, par exemple*`myVehicle`*.

   Dans cet exemple, puisque vous avez fourni des valeurs par défaut pour les paramètres lors de la création de la commande, la `start-command-execution` CLI peut utiliser ces valeurs lors de l'exécution de la commande. Vous pouvez également choisir de remplacer la valeur par défaut en spécifiant une valeur différente pour les paramètres lorsque vous utilisez la CLI.

   ```
   aws iot-data start-command-execution \    
       --command-arn arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode \
       --target-arn arn:aws:iot:ap-south-1:123456789012:thing/myVehicle
   ```

   L'exécution de cette commande renvoie un ID d'exécution de commande. Vous pouvez utiliser cet ID pour demander le statut, les détails et l'historique de l'exécution des commandes.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542"
   }
   ```

   Pour des exemples supplémentaires d'utilisation de la CLI, consultez[Envoyer une commande (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

1. 

**Récupère les informations relatives à l'exécution de la commande**

   Exécutez la commande suivante pour récupérer les informations relatives à la commande que vous avez exécutée sur le périphérique cible. Spécifiez le`execution-id`, que vous avez obtenu comme résultat de l'`start-command-execution`opération ci-dessus, et le`target-arn`, qui est l'ARN de l'appareil que vous ciblez.
**Note**  
Pour obtenir les dernières informations d'état, vos appareils doivent avoir publié les informations d'état mises à jour dans la rubrique de réponse réservée MQTT pour les commandes utilisant l'API `UpdateCommandExecution` MQTT. Pour de plus amples informations, veuillez consulter [Mettre à jour le résultat d'exécution des commandes](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Si vous lancez plusieurs exécutions de commandes, vous pouvez utiliser l'`ListCommandExecutions`API pour répertorier toutes les exécutions de commandes de votre compte, puis utiliser l'`GetCommandExecution`API pour obtenir des informations supplémentaires sur une exécution spécifique. Pour de plus amples informations, veuillez consulter [Répertorier les exécutions de commandes dans votre compte](send-monitor-remote-command-cli.md#list-remote-command-execution-cli).

   ```
   aws iot get-command-execution \    
       --execution-id <"07e4b780-7eca-4ffd-b772-b76358da5542"> \ 
       --target-arn arn:aws:iot:us-east-1:<account>:thing/myVehicle
   ```

   L'exécution de cette commande renvoie des informations sur l'exécution de la commande, son état d'exécution, l'heure à laquelle elle a commencé à s'exécuter et l'heure à laquelle elle s'est terminée. Par exemple, la réponse suivante indique que l'exécution de la commande a réussi sur l'équipement cible et que le mode de direction a été désactivé.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "targetArn": "arn:aws:iot:ap-south-1:123456789012:thing/myVehicle",
       "result": "SUCCEEDED",
        "statusReason": {
           "reasonCode": "65536",
           "reasonDescription": "SUCCESS"
       },
       "result": {
           "KeyName": {
               "S": "",
               "B": true,
               "BIN": null
           }
       },
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "completedAt": "2024-03-23T00:50:10.095000-07:00",
       "parameters": '{
            "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode":
            { "S": "true" }
       }' 
   }
   ```

## Nettoyage
<a name="remote-command-tutorial-clean"></a>

Maintenant que vous avez créé une commande et que vous l'avez exécutée sur votre appareil, vous pouvez la supprimer si vous n'avez plus l'intention de l'utiliser. Toutes les exécutions de commandes en cours continueront de s'exécuter sans être affectées par la demande de suppression.

**Note**  
Vous pouvez également déprécier une commande si elle est obsolète et vous devrez peut-être l'utiliser ultérieurement pour l'exécuter sur le périphérique cible.

1. 

**(Facultatif) Déprécier la ressource de commande**

   Exécutez la commande suivante pour la rendre obsolète, où se `command-id` trouve l'ID de commande dans le résultat de l'`get-command`opération ci-dessus.

   ```
   aws iot update-command \    
      --command-id TurnOffSteeringMode \    
      --deprecated
   ```

   L'exécution de cette commande renvoie un résultat indiquant que la commande est obsolète. Vous pouvez également utiliser la CLI pour restaurer la commande. 
**Note**  
Vous pouvez également utiliser la `update-command` CLI pour mettre à jour le nom d'affichage et la description d'une commande. Pour plus d’informations, consultez [Mettre à jour ou rendre obsolète une ressource de commande](create-manage-remote-command-cli.md#update-remote-command-cli).

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "deprecated": true,
       "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
   }
   ```

1. 

**Supprimer la commande**

   Exécutez la commande suivante pour supprimer la commande, spécifiée par le`command-id`.
**Note**  
L'action de suppression est permanente et ne peut pas être annulée.

   ```
   aws iot delete-command --command-id TurnOffSteeringMode
   ```

   Si la demande de suppression aboutit, vous verrez un HTTP `statusCode` de 202 ou 204 selon que vous avez marqué la commande comme obsolète ou non et selon la date à laquelle elle a été abandonnée. Pour plus d'informations et pour voir un exemple, consultez [Supprimer une ressource de commande](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Vous pouvez utiliser la `get-command` CLI pour vérifier que la commande a été supprimée de votre compte.

1. 

**(Facultatif) Supprimez les exécutions de commandes**

   Par défaut, toutes les exécutions de commandes seront supprimées dans les six mois suivant leur création. Vous pouvez consulter ces informations à l'aide du `timeToLive` paramètre de l'`GetCommandExecution`API.

   Sinon, si l'exécution de votre commande est devenue terminale, par exemple si votre statut d'exécution est l'un des `SUCCEEDED` suivants :`FAILED`, ou`REJECTED`, vous pouvez supprimer l'exécution de la commande. Exécutez la commande suivante pour supprimer l'exécution, où se `execution-id` trouve l'ID d'exécution dans le résultat de l'`get-command-execution`opération ci-dessus.

   ```
   aws iot delete-command-execution \ 
               --execution-id "07e4b780-7eca-4ffd-b772-b76358da5542"
   ```

   Vous pouvez utiliser la `get-command-execution` CLI pour vérifier que l'exécution de la commande a été supprimée de votre compte.