

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.

# Flujo de trabajo de comandos de
<a name="iot-remote-command-workflow"></a>

Este flujo de trabajo muestra cómo los dispositivos interactúan con AWS IoT Device Management los comandos. Todas las solicitudes de la API HTTP utilizan [credenciales Sigv4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) para firmar.

![\[Descripción general del flujo de trabajo de alto nivel de los comandos del AWS IoT Device Management dispositivo.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/device-command-workflow.png)


**Topics**
+ [Creación y administración de comandos](#command-create-command)
+ [Selección del dispositivo de destino para los comandos y suscripción a los temas de MQTT](#command-choose-target)
+ [Inicio y supervisión de las ejecuciones de comandos en el dispositivo de destino](#command-command-executions)
+ [(Opcional) Habilitación de las notificaciones para los eventos de comandos](#iot-remote-command-commands-notifications)

## Creación y administración de comandos
<a name="command-create-command"></a>

Para crear y administrar comandos para los dispositivos, siga los pasos que se indican a continuación.

1. 

**Creación de un recurso de comandos**

   Cree un comando desde el [centro de comandos](https://console.aws.amazon.com/iot/home#/commandHub) o mediante la [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)API.

1. 

**Especificación de la carga útil**

   Proporcione una carga útil en cualquier formato. Especifique el tipo de contenido para garantizar una interpretación correcta del dispositivo.

   En el caso de los comandos dinámicos con plantillas de carga útil, la carga útil final se genera en tiempo de ejecución con los parámetros proporcionados. Las plantillas solo admiten el formato JSON, pero la carga útil generada se puede enviar como JSON o CBOR.

1. 

**(Opcional) Administración de los comandos creados**

   Actualice el nombre para mostrar y la descripción después de la creación. Marque los comandos como obsoletos cuando ya no sean necesarios o elimínelos permanentemente. Para modificar la información de carga útil, crea un comando nuevo.

## Selección del dispositivo de destino para los comandos y suscripción a los temas de MQTT
<a name="command-choose-target"></a>

Elija su dispositivo de destino y configure los temas de MQTT para recibir comandos y publicar respuestas.

1. 

**Selección del dispositivo de destino para el comando**

   Elija un dispositivo de destino para recibir y ejecutar el comando. Utilice un nombre de cosa para los dispositivos registrados o un ID de cliente para los dispositivos no registrados. Para obtener más información, consulte [Consideraciones sobre los dispositivos de destino](iot-remote-command-execution-start-monitor.md#iot-command-execution-target).

1. 

**Configure la política de AWS IoT dispositivos**

   Configure una política de IAM que conceda permisos para recibir ejecuciones y publicar actualizaciones. Consulte [Ejemplo de política de IAM](iot-remote-command-execution-start-monitor.md#iot-remote-command-execution-update-policy) para ver ejemplos de políticas.

1. 

**Establecimiento de una conexión con MQTT**

   Conecte los dispositivos al agente de mensajes y suscríbase a los temas de solicitud y respuesta. Los dispositivos necesitan `iot:Connect` permiso. Busque el punto final de su plano de datos mediante el comando `DescribeEndpoint` API o `describe-endpoint` CLI:

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

   Al ejecutar este comando, se devolverá el punto de conexión del plano de datos específico de la cuenta, tal como se muestra a continuación.

   ```
   account-specific-prefix.iot.region.amazonaws.com
   ```

1. 

**Suscríbase a los temas de comandos**

   Suscríbase al tema de solicitud de comandos. Al iniciar una ejecución, el agente de mensajes publica la carga útil de este tema. El dispositivo recibe y procesa el comando.

   (Opcional) Suscríbase a los temas de respuesta (`accepted`o`rejected`) para recibir confirmación de si el servicio en la nube ha aceptado o rechazado la respuesta del dispositivo.

   En este ejemplo, sustituya:
   + *`<device>`* con `thing` o `client` en función de si el dispositivo al que se dirige se ha registrado como un objeto de IoT o se ha especificado como un cliente de MQTT.
   + *`<DeviceID>`* con el identificador único del dispositivo de destino. Este ID puede ser el ID único de cliente de MQTT o el nombre de un objeto.
**nota**  
Si el tipo de carga útil no es JSON o CBOR, es posible que el *<PayloadFormat>* campo no esté presente en el tema de solicitud de comandos. Para obtener el formato de carga útil, le recomendamos que lo utilice MQTT5 para obtener la información del formato de los encabezados de los mensajes de MQTT. Para obtener más información, consulte [Temas de comandos](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>
   ```

## Inicio y supervisión de las ejecuciones de comandos en el dispositivo de destino
<a name="command-command-executions"></a>

Una vez creados los comandos y especificado los destinos del comando, puede iniciar la ejecución en el dispositivo de destino realizando los siguientes pasos.

1. 

**Inicio de la ejecución de comandos en el dispositivo de destino**

   Inicie la ejecución desde el [centro de comandos](https://console.aws.amazon.com/iot/home#/commandHub) o utilice la `StartCommandExecution` API con el punto final específico de su cuenta. Úselo `iot:Data-ATS` para doble pila (IPv4/IPv6) o `iot:Jobs` solo para. IPv4 

   La API publica la carga útil en el tema de solicitud de comandos.
**nota**  
Si el dispositivo está desconectado y utiliza sesiones persistentes de MQTT, el comando espera en el intermediario de mensajes. Cuando el dispositivo se vuelva a conectar antes de que se agote el tiempo de espera, puede procesar el comando y publicar los resultados. Si se agota el tiempo de espera, se agota el tiempo de espera de la ejecución y se descarta la carga útil.

1. 

**Actualización del resultado de la ejecución de comandos**

   El dispositivo recibe la carga útil, procesa el comando, realiza las acciones especificadas y publica los resultados en el tema de respuesta a los comandos mediante una API basada en `UpdateCommandExecution` MQTT. Si se ha suscrito a los temas aceptados y rechazados, el dispositivo recibe la confirmación de si el servicio en la nube ha aceptado o rechazado la respuesta.

   Según lo que haya especificado en el tema de la solicitud, *<devices>* pueden ser cosas o clientes, y *<DeviceID>* puede ser su nombre o el AWS IoT ID de cliente de MQTT.
**nota**  
Solo *<PayloadFormat>* puede ser JSON o CBOR en el tema de respuesta a los comandos.

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

1. 

**(Opcional) Recuperación del resultado de la ejecución de comandos**

   Recupere los resultados de la ejecución desde la AWS IoT consola o mediante`GetCommandExecution`. El dispositivo debe publicar los resultados en el tema de respuesta a los comandos para obtener la información más reciente. Vea detalles adicionales, incluida la hora de la última actualización, el resultado y la hora de finalización.

## (Opcional) Habilitación de las notificaciones para los eventos de comandos
<a name="iot-remote-command-commands-notifications"></a>

Suscríbase a los eventos de Commands para recibir notificaciones cuando cambie el estado de ejecución. Para obtener información detallada sobre los eventos de ejecución de comandos, incluidos el formato del mensaje del evento y los atributos de carga útil, consulte[Eventos de ejecución de comandos](command-events.md).

1. 

**Creación de una regla del tema**

   Suscríbase al tema de eventos de comandos para ver las notificaciones de cambios de estado. Cree una regla temática para enrutar los datos del dispositivo a otros AWS IoT servicios AWS Lambda, como Amazon SQS y AWS Step Functions, mediante la AWS IoT consola o. [Crear una AWS IoT regla](iot-create-rule.md)

   En este ejemplo, sustituya `<CommandID>` por el identificador del comando del que desea recibir notificaciones y `<CommandExecutionStatus>` por el estado de la ejecución del comando.

   ```
   $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
   ```
**nota**  
Para recibir notificaciones de todos los comandos y estados de ejecución de los comandos, puede utilizar caracteres comodín y suscribirse al tema siguiente.

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

1. 

**Recepción y procesamiento de los eventos de comandos**

   Administre los comandos, envíe notificaciones y cree aplicaciones utilizando los eventos suscritos.

En el siguiente código se muestra un ejemplo de carga útil para las notificaciones de eventos de comandos que recibirá.

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