

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplo: Uso de comandos para controlar el modo de dirección de un vehículo (AWS CLI)
<a name="remote-command-tutorial"></a>

**importante**  
El acceso a ciertas FleetWise funciones de AWS IoT está actualmente restringido. Para obtener más información, consulte [AWS Disponibilidad regional y de funciones en el AWS IoT FleetWise](fleetwise-regions.md).

El siguiente ejemplo muestra cómo utilizar la función de comandos mediante el AWS CLI. En este ejemplo, se utiliza un AWS IoT FleetWise vehículo como dispositivo objetivo para mostrar cómo se puede enviar un comando para controlar de forma remota el modo de dirección.

**Topics**
+ [Ejemplo de descripción general del modo de dirección del vehículo](#iot-remote-command-tutorial-overview)
+ [Requisitos previos](#iot-remote-command-tutorial-prereq)
+ [Política de IAM para el uso de comandos remotos](#remote-command-policy)
+ [Ejecute AWS IoT comandos (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Limpieza](#remote-command-tutorial-clean)

## Ejemplo de descripción general del modo de dirección del vehículo
<a name="iot-remote-command-tutorial-overview"></a>

En este ejemplo, podrás:

1. Cree un recurso de comando para la operación y `create-command` AWS CLI utilícelo para cambiar el modo de dirección del vehículo.

1. Recupere información sobre el comando, como la hora en que se creó o se actualizó por última vez mediante el `get-command` AWS CLI.

1. Envíe el comando al vehículo utilizando el `start-command-execution` AWS CLI modo de dirección como parámetro obligatorio, que luego se ejecutará en el dispositivo.

1. Obtenga el resultado de la ejecución del comando mediante el `get-command-execution` AWS CLI. Puede comprobar cuándo se completa la ejecución y recuperar detalles adicionales, como el resultado de la ejecución y el tiempo que se tardó en completar la ejecución del comando.

1. Realice actividades de limpieza eliminando todos los comandos y las ejecuciones de comandos que ya no desee utilizar.

## Requisitos previos
<a name="iot-remote-command-tutorial-prereq"></a>

Antes de ejecutar este ejemplo:
+ Aprovisione su AWS IoT FleetWise vehículo como una AWS IoT cosa inscrita en el AWS IoT registro. También debes añadir un certificado a lo tuyo y activarlo, y adjuntar una política a lo tuyo. Luego, su dispositivo puede conectarse a la nube y ejecutar los comandos. Para obtener más información, consulte [Aprovisionar vehículos](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Cree un usuario de IAM y una política de IAM que le conceda permiso para realizar las operaciones de la API relacionadas con el uso de comandos, como se muestra en. [Política de IAM para el uso de comandos remotos](#remote-command-policy)

## Política de IAM para el uso de comandos remotos
<a name="remote-command-policy"></a>

En la siguiente tabla se muestra un ejemplo de política de IAM que permite el acceso a todas las operaciones de la API del plano de control y del plano de datos para la función de comandos. El usuario de la aplicación tendrá permisos para realizar todas las operaciones de la API de comandos remotos, como se muestra en la tabla.


**Operación de la API**  

| Acción de la API | Plano de control/datos | Protocolo | Description (Descripción) | Recurso | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Plano de control | HTTP | Crea un recurso de comandos |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Plano de control | HTTP | Recupera información sobre un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Plano de control | HTTP | Actualiza la información sobre un comando o lo deja obsoleto |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Plano de control | HTTP | Muestra los comandos de tu cuenta |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Plano de control | HTTP | Elimina un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Plano de datos | HTTP | Comienza a ejecutar un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Plano de datos | MQTT | Actualiza la ejecución de un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Plano de control | HTTP | Recupera información sobre la ejecución de un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Plano de control | HTTP | Muestra las ejecuciones de comandos en su cuenta |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Plano de control | HTTP | Elimina la ejecución de un comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

En este ejemplo, sustituya:
+ `us-east-1`con tu Región de AWS, como`ap-south-1`.
+ `111122223333` con el número de la Cuenta de AWS , como, por ejemplo `57EXAMPLE833`.
+ `command-id``command-id1`, y `command-id2` con su identificador de comando único, como `LockDoor` o`TurnOffAC`.
+ `thing-name`con el nombre de tu AWS IoT cosa, como`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"
            ]
        }
    ]
}
```

------

## Ejecute AWS IoT comandos (AWS CLI)
<a name="iot-remote-command-tutorial-run"></a>

A continuación, se muestra cómo se puede utilizar AWS CLI para ejecutar operaciones con comandos y cambiar el modo de dirección del vehículo.

1. 

**Cree un recurso de comando para el funcionamiento del modo de dirección**

   Cree el comando que desee enviar a su dispositivo mediante la `create-command` CLI. En este ejemplo, especifique:
   + `command-id` como *`TurnOffSteeringMode`*
   + `role-arn`ya que `role-arn` debe proporcionarse `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` la función de IAM, ya que es la función de IAM la que otorga los permisos para crear y ejecutar comandos en el vehículo. Para obtener más información, consulte [Conceda AWS IoT Device Management permiso para generar la carga útil de los comandos con AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`como "» *`Turn off steering mode`*
   + `namespace`debe ser `AWS-IoT-FleetWise`
   + `mandatory-parameters`como un par nombre-valor, con `name` como "*\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode*" y DefaultValue como `{ "S": "true" }`
**nota**  
También puede crear un comando sin especificar ningún parámetro obligatorio. A continuación, debe especificar los parámetros que se utilizarán al ejecutar el comando mediante la `start-command-execution` CLI. Para ver un ejemplo, consulta [Escenarios de uso de comandos](remote-command-use-cases.md).
**importante**  
Al utilizar el espacio de `AWS-IoT-FleetWise` nombres, debe asegurarse de que el `Name` campo especificado como parte del mismo `mandatory-parameters` utilice el `$actuatorPath.` prefijo y que el `Value` campo utilice el tipo de datos de cadena.

   ```
   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" }
         }
       ]'
   ```

   El siguiente resultado muestra un ejemplo de respuesta de la CLI, donde `ap-south-1` y `123456789012` son ejemplos del Cuenta de AWS ID Región de AWS y.

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

   Para ver ejemplos adicionales sobre el uso de este comando, consulte[Creación de un recurso de comandos](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Recupere información sobre el comando**

   Ejecute el siguiente comando para recuperar información sobre el comando, donde `command-id` aparece el identificador del comando en el resultado de la `create-command` operación desde arriba.
**nota**  
Si creas más de un comando, puedes usar la `ListCommands` API para enumerar todos los comandos de tu cuenta y, a continuación, usar la `GetCommand` API para obtener información adicional sobre un comando específico. Para obtener más información, consulte [Enumere los comandos de su cuenta](create-manage-remote-command-cli.md#list-remote-command-cli).

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

   La ejecución de este comando genera la siguiente respuesta. Verás la hora en que se creó el comando y cuándo se actualizó por última vez, los parámetros que especificaste y si el comando está disponible para ejecutarse en el dispositivo.

   ```
   {
       "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
   }
   ```

   Para ver ejemplos adicionales sobre el uso de este comando, consulte[Recuperación de información sobre un comando](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Inicie la ejecución del comando**

   Ejecute el siguiente comando para iniciar la ejecución del comando, donde `command-arn` aparece el comando ARN en la salida de la `get-command` operación desde arriba. `target-arn`Es el ARN del dispositivo de destino para el que está ejecutando el comando, por ejemplo,. *`myVehicle`*

   En este ejemplo, dado que proporcionó valores predeterminados para los parámetros al crear el comando, la `start-command-execution` CLI puede usar estos valores al ejecutar el comando. También puede optar por anular el valor predeterminado especificando un valor diferente para los parámetros cuando utilice 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
   ```

   La ejecución de este comando devuelve un ID de ejecución del comando. Puede usar este ID para consultar el estado de ejecución del comando, los detalles y el historial de ejecución del comando.

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

   Para ver ejemplos adicionales sobre el uso de la CLI, consulte[Envía un comando ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli).

1. 

**Recupere información sobre la ejecución del comando**

   Ejecute el siguiente comando para recuperar información sobre el comando que ejecutó en el dispositivo de destino. Especifique el`execution-id`, que obtuvo como resultado de la `start-command-execution` operación desde arriba, y el`target-arn`, que es el ARN del dispositivo al que apunta.
**nota**  
Para obtener la información de estado más reciente, sus dispositivos deben haber publicado la información de estado actualizada en el tema de respuesta reservada de MQTT para los comandos que utilizan la API de `UpdateCommandExecution` MQTT. Para obtener más información, consulte [Actualiza el resultado de la ejecución del comando](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Si inicia más de una ejecución de comandos, puede utilizar la `ListCommandExecutions` API para enumerar todas las ejecuciones de comandos de su cuenta y, a continuación, utilizarla `GetCommandExecution` para obtener información adicional sobre una ejecución específica. Para obtener más información, consulte [Enumera las ejecuciones de comandos en tu cuenta](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
   ```

   Al ejecutar este comando, se devuelve información sobre la ejecución del comando, el estado de la ejecución, la hora en que comenzó a ejecutarse y la hora en que se completó. Por ejemplo, la siguiente respuesta muestra que la ejecución del comando se realizó correctamente en el dispositivo de destino y que el modo de dirección estaba desactivado.

   ```
   {
       "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" }
       }' 
   }
   ```

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

Ahora que ha creado un comando y lo ha ejecutado en su dispositivo, si ya no tiene intención de usarlo, puede eliminarlo. Las ejecuciones de comandos pendientes que estén en curso seguirán ejecutándose sin que se vean afectadas por la solicitud de eliminación.

**nota**  
Como alternativa, también puedes dejar de usar un comando si está desactualizado y es posible que tengas que usarlo más adelante para ejecutarlo en el dispositivo de destino.

1. 

**(Opcional) Elimine el recurso de comandos**

   Ejecute el siguiente comando para dejarlo obsoleto, donde `command-id` aparece el identificador del comando que aparece arriba en el resultado de la `get-command` operación.

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

   La ejecución de este comando devuelve un resultado que indica que el comando ha quedado obsoleto. También puede usar la CLI para restaurar el comando. 
**nota**  
También puede usar la `update-command` CLI para actualizar el nombre mostrado y la descripción de un comando. Para obtener información adicional, consulta [Actualiza o desactiva un recurso de comando](create-manage-remote-command-cli.md#update-remote-command-cli).

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

1. 

**Elimine el comando**

   Ejecute el siguiente comando para eliminar el comando especificado por`command-id`.
**nota**  
La acción de eliminación es permanente y no se puede deshacer.

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

   Si la solicitud de eliminación se realiza correctamente, verás un HTTP `statusCode` de 202 o 204, dependiendo de si marcaste el comando como obsoleto y de cuándo lo hizo. Para obtener más información y un ejemplo, consulte [Eliminación de un recurso de comandos](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Puede usar la `get-command` CLI para comprobar que el comando se ha eliminado de su cuenta.

1. 

**(Opcional) Elimine las ejecuciones de comandos**

   De forma predeterminada, todas las ejecuciones de comandos se eliminarán en un plazo de seis meses a partir de la fecha en que las haya creado. Puede ver esta información mediante el `timeToLive` parámetro de la `GetCommandExecution` API.

   Como alternativa, si la ejecución del comando ha pasado a ser terminal, por ejemplo, cuando el estado de ejecución es uno de `SUCCEEDED``FAILED`, o bien`REJECTED`, puede eliminar la ejecución del comando. Ejecute el siguiente comando para eliminar la ejecución, donde `execution-id` aparece el identificador de ejecución que aparece arriba en el resultado de la `get-command-execution` operación.

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

   Puede usar la `get-command-execution` CLI para comprobar que la ejecución del comando se ha eliminado de su cuenta.