

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exemplo: Usando comandos para controlar o modo de direção de um veículo (AWS CLI)
<a name="remote-command-tutorial"></a>

**Importante**  
O acesso a determinados FleetWise recursos de AWS IoT está atualmente bloqueado. Para obter mais informações, consulte [AWS Disponibilidade de regiões e recursos na AWS IoT FleetWise](fleetwise-regions.md).

O exemplo a seguir mostra como usar o recurso de comandos usando AWS CLI o. Este exemplo usa um AWS IoT FleetWise veículo como dispositivo de destino para mostrar como você pode enviar um comando para controlar remotamente o modo de direção.

**Topics**
+ [Visão geral do exemplo do modo de direção do veículo](#iot-remote-command-tutorial-overview)
+ [Pré-requisitos](#iot-remote-command-tutorial-prereq)
+ [Política do IAM para usar comandos remotos](#remote-command-policy)
+ [Executar AWS IoT comandos (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Limpeza](#remote-command-tutorial-clean)

## Visão geral do exemplo do modo de direção do veículo
<a name="iot-remote-command-tutorial-overview"></a>

Neste exemplo, você vai:

1. Crie um recurso de comando para a operação usando o `create-command` AWS CLI para alterar o modo de direção do veículo.

1. Recupere informações sobre o comando, como a hora em que ele foi criado ou atualizado pela última vez usando o. `get-command` AWS CLI

1. Envie o comando para o veículo usando o modo de direção como parâmetro obrigatório, que será executado no dispositivo. `start-command-execution` AWS CLI 

1. Obtenha o resultado da execução do comando usando `get-command-execution` AWS CLI o. Você pode verificar quando a execução foi concluída e recuperar detalhes adicionais, como o resultado da execução e o tempo necessário para concluir a execução do comando.

1. Execute atividades de limpeza removendo quaisquer comandos e execuções de comandos que você não queira mais usar.

## Pré-requisitos
<a name="iot-remote-command-tutorial-prereq"></a>

Antes de executar este exemplo:
+ Provisione seu AWS IoT FleetWise veículo como AWS IoT algo no AWS IoT registro. Você também deve adicionar um certificado à sua coisa, ativá-lo e anexar uma política à sua coisa. Seu dispositivo pode então se conectar à nuvem e executar os comandos. Para obter mais informações, consulte [Provisionar veículos](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Crie um usuário do IAM e uma política do IAM que conceda a você permissão para realizar as operações de API para usar comandos, conforme mostrado em[Política do IAM para usar comandos remotos](#remote-command-policy).

## Política do IAM para usar comandos remotos
<a name="remote-command-policy"></a>

A tabela a seguir mostra um exemplo de política do IAM que concede acesso a todas as operações de API do plano de controle e do plano de dados para o recurso de comandos. O usuário do aplicativo terá permissões para realizar todas as operações da API de comando remoto, conforme mostrado na tabela.


**Operação de API**  

| Ação da API | Plano de controle/dados | Protocolo | Description | Recurso | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Ambiente de gerenciamento | HTTP | Cria um recurso de comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Ambiente de gerenciamento | HTTP | Recupera informações sobre um comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Ambiente de gerenciamento | HTTP | Atualiza as informações sobre um comando ou para descontinuá-lo |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Ambiente de gerenciamento | HTTP | Lista os comandos na sua conta |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Ambiente de gerenciamento | HTTP | Exclui um comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Plano de dados | HTTP | Inicia a execução de um comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Plano de dados | MQTT | Atualizar a execução de um comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Ambiente de gerenciamento | HTTP | Recupera informações sobre a execução de um comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Ambiente de gerenciamento | HTTP | Lista as execuções de comandos em sua conta |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Ambiente de gerenciamento | HTTP | Exclui a execução de um comando |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

Neste exemplo, substitua:
+ `us-east-1`com o seu Região da AWS, como`ap-south-1`.
+ `111122223333` pelo número de sua Conta da AWS , como `57EXAMPLE833`.
+ `command-id``command-id1`, e `command-id2` com seu identificador de comando exclusivo, como `LockDoor` ou`TurnOffAC`.
+ `thing-name`com o nome da sua AWS IoT coisa, 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"
            ]
        }
    ]
}
```

------

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

O seguinte mostra como você pode usar o AWS CLI para executar operações de comandos e alterar o modo de direção do veículo.

1. 

**Crie um recurso de comando para a operação do modo de direção**

   Crie o comando que você deseja enviar ao seu dispositivo usando a `create-command` CLI. Neste exemplo, especifique:
   + `command-id` como *`TurnOffSteeringMode`*
   + `role-arn`como `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` O `role-arn` deve ser fornecido, pois é a função do IAM que concede permissões para criar e executar comandos em seu veículo. Para obter mais informações, consulte [Conceda AWS IoT Device Management permissão para gerar a carga útil para comandos com AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`como "*`Turn off steering mode`*”
   + `namespace`deve ser `AWS-IoT-FleetWise`
   + `mandatory-parameters`como um par nome-valor, com as "*\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode*" e defaultValue `name` como `{ "S": "true" }`
**nota**  
Você também pode criar um comando sem especificar nenhum parâmetro obrigatório. Em seguida, você deve especificar os parâmetros a serem usados ao executar o comando usando a `start-command-execution` CLI. Para ver um exemplo, consulte [Cenários de uso de comandos](remote-command-use-cases.md).
**Importante**  
Ao usar o `AWS-IoT-FleetWise` namespace, você deve garantir que o `Name` campo especificado como parte do `mandatory-parameters` use o `$actuatorPath.` prefixo e que o `Value` campo use o tipo de dados de string.

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

   A saída a seguir mostra um exemplo de resposta da CLI, onde `ap-south-1` e `123456789012` são exemplos do ID Região da AWS e. Conta da AWS 

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

   Para obter exemplos adicionais sobre o uso desse comando, consulte[Criar um recurso de comando](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Recupere informações sobre o comando**

   Execute o comando a seguir para recuperar informações sobre o comando, onde `command-id` está o ID do comando na saída da `create-command` operação acima.
**nota**  
Se você criar mais de um comando, poderá usar a `ListCommands` API para listar todos os comandos em sua conta e, em seguida, usar a `GetCommand` API para obter informações adicionais sobre um comando específico. Para obter mais informações, consulte [Listar comandos na sua conta](create-manage-remote-command-cli.md#list-remote-command-cli).

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

   A execução desse comando gera a resposta a seguir. Você verá a hora em que o comando foi criado e quando foi atualizado pela última vez, todos os parâmetros que você especificou e se o comando está disponível para execução no 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 obter exemplos adicionais sobre o uso desse comando, consulte[Recuperar informações sobre um comando](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Inicie a execução do comando**

   Execute o comando a seguir para começar a executar o comando, onde `command-arn` está o comando ARN na saída `get-command` da operação acima. `target-arn`É o ARN do dispositivo de destino para o qual você está executando o comando, por exemplo,. *`myVehicle`*

   Neste exemplo, como você forneceu valores padrão para os parâmetros ao criar o comando, a `start-command-execution` CLI pode usar esses valores ao executar o comando. Você também pode optar por substituir o valor padrão especificando um valor diferente para os parâmetros ao usar a 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
   ```

   A execução desse comando exibe um ID de execução. Você pode usar esse ID para consultar o status, os detalhes e o histórico da execução do comando.

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

   Para obter exemplos adicionais sobre o uso da CLI, consulte. [Enviar um comando (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli)

1. 

**Recupere informações sobre a execução do comando**

   Execute o comando a seguir para recuperar informações sobre o comando que você executou no dispositivo de destino. Especifique o`execution-id`, que você obteve como saída da `start-command-execution` operação acima, e o`target-arn`, que é o ARN do dispositivo que você está segmentando.
**nota**  
Para obter as informações de status mais recentes, seus dispositivos devem ter publicado as informações de status atualizadas no tópico de resposta reservada do MQTT para comandos que usam a API do `UpdateCommandExecution` MQTT. Para obter mais informações, consulte [Atualizar o resultado da execução do comando](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Se você iniciar mais de uma execução de comando, poderá usar a `ListCommandExecutions` API para listar todas as execuções de comandos em sua conta e, em seguida, usar a `GetCommandExecution` API para obter informações adicionais sobre uma execução específica. Para obter mais informações, consulte [Listar as execuções de comandos em sua conta](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
   ```

   A execução desse comando retorna informações sobre a execução do comando, o status da execução, a hora em que a execução foi iniciada e a hora em que foi concluída. Por exemplo, a resposta a seguir mostra que a execução do comando foi bem-sucedida no dispositivo de destino e o modo de direção foi desativado.

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

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

Agora que você criou um comando e o executou em seu dispositivo, se não pretende mais usá-lo, você pode excluí-lo. Todas as execuções de comando pendentes em andamento continuarão sendo executadas sem serem afetadas pela solicitação de exclusão.

**nota**  
Como alternativa, você também pode descontinuar um comando se ele estiver desatualizado e talvez seja necessário usá-lo posteriormente para ser executado no dispositivo de destino.

1. 

**(Opcional) Descontinuar o recurso de comando**

   Execute o comando a seguir para descontinuar o comando, onde `command-id` está o ID do comando na saída da `get-command` operação acima.

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

   A execução desse comando retorna uma saída que mostra que o comando foi descontinuado. Você também pode usar a CLI para restaurar o comando. 
**nota**  
Você também pode usar a `update-command` CLI para atualizar o nome de exibição e a descrição de um comando. Para obter informações adicionais, consulte [Atualizar ou descontinuar um 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. 

**Exclua o comando**

   Execute o comando a seguir para excluir o comando, especificado pelo`command-id`.
**nota**  
A ação de exclusão é permanente e não pode ser desfeita.

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

   Se a solicitação de exclusão for bem-sucedida, você verá um HTTP `statusCode` de 202 ou 204, dependendo se você marcou o comando para descontinuação e quando ele foi descontinuado. Para obter mais informações e um exemplo, consulte [Excluir um recurso de comando](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Você pode usar a `get-command` CLI para verificar se o comando foi removido da sua conta.

1. 

**(Opcional) Exclua as execuções do comando**

   Por padrão, todas as execuções de comandos serão excluídas em seis meses a partir da data em que você as criou. Você pode visualizar essas informações usando o `timeToLive` parâmetro da `GetCommandExecution` API.

   Como alternativa, se sua execução de comando se tornou terminal, como quando seu status de execução é de`SUCCEEDED`,`FAILED`, ou`REJECTED`, você pode excluir a execução do comando. Execute o comando a seguir para excluir a execução, onde `execution-id` está o ID de execução na saída da `get-command-execution` operação acima.

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

   Você pode usar a `get-command-execution` CLI para verificar se a execução do comando foi removida da sua conta.