Criar e gerenciar comandos
Você pode usar o recurso de comandos do AWS IoT Device Management para configurar ações remotas reutilizáveis ou enviar instruções únicas e imediatas aos seus dispositivos. As seções a seguir mostram como você pode criar e gerenciar comandos por meio do console da AWS IoT e usando a AWS CLI.
Operações de criar e gerenciar comandos
Criar um recurso de comando
Ao criar um comando, você deve fornecer as informações a seguir.
-
Informações gerais
Ao criar um comando, você deve fornecer um ID, que é um identificador exclusivo para ajudar a identificar o comando quando quiser executá-lo no dispositivo de destino. Você também pode especificar um nome de exibição, descrição e tags para ajudar a gerenciar ainda mais o comando.
-
Carga útil
Você também deve fornecer uma carga útil que defina as ações que o dispositivo deve executar. Embora opcional, recomendamos que você especifique o tipo de formato da carga útil para que o dispositivo a interprete corretamente.
Os tópicos reservados dos comandos usam um formato que depende do tipo de formato da carga útil.
-
Se você especificar um tipo de conteúdo de carga útil de
application/jsonouapplication/cbor, o tópico da solicitação será o seguinte:$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat> -
Se você especificar um tipo de conteúdo de carga útil diferente de
application/jsonouapplication/cbor, ou se não especificar o tipo de formato de carga útil, o tópico da solicitação será o seguinte: Nesse caso, o formato da carga útil será incluído no cabeçalho da mensagem MQTT.$aws/commands/<devices>/<DeviceID>/executions/+/request
O tópico de resposta dos comandos exibirá um formato que usa json ou cbor independe do tipo de formato de carga útil. O tópico de resposta usará o formato a seguir, em que <PayloadFormat> deve ser json ou cbor.
$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
As seções a seguir mostram as considerações sobre o formato da carga útil do comando e como criar comandos no console.
Formato de carga útil do comando
A carga útil pode usar qualquer formato de sua escolha. O tamanho máximo da carga útil não deve exceder 32 KB. Para garantir que o dispositivo interprete de forma segura e correta a carga útil, recomendamos que você especifique o tipo de formato dela.
Você especifica o tipo de formato de carga útil usando o formato type/subtype, como application/json ou application/cbor. Por padrão, ele será definido como application/octet-stream. Para ter informações sobre os formatos de carga útil que você pode especificar, consulte Tipos comuns de MIME
Como criar um comando (console)
Para criar um comando no console, acesse o Hub de comandos
-
Para criar um recurso de comando, escolha Criar comando.
-
Especifique um ID exclusivo para ajudar você a identificar o comando a ser executado no dispositivo de destino.
-
(Opcional) Especifique um nome de exibição opcional, uma descrição e quaisquer pares de nome-valor como tags para seu comando.
-
Faça upload do arquivo de carga útil do seu armazenamento local que contém as ações a serem realizadas pelo dispositivo. Embora opcional, recomendamos que você especifique o tipo de formato da carga útil para que o dispositivo interprete corretamente o arquivo e processe as instruções.
-
Escolha Criar comando.
Esta seção descreve a operação da API do ambiente de gerenciamento HTTP, o CreateCommand e o comando da AWS CLI correspondente, create-command que você pode executar para criar um recurso de comando.
Carga útil do comando
Ao criar o comando, forneça uma carga útil. A carga útil fornecida é codificada em base64. Quando seus dispositivos recebem o comando, a lógica do lado do dispositivo pode processar a carga útil e realizar as ações especificadas. Para garantir que os dispositivos recebam corretamente o comando e a carga útil, recomendamos que você especifique o tipo de conteúdo da carga.
nota
Depois de criado o comando, não é possível modificar a carga útil. Para modificar a carga útil, você precisará criar um comando.
Exemplo de política do IAM
Antes de usar essa operação de API, garanta que sua política do IAM autorize você a realizar essa ação no dispositivo. O exemplo a seguir mostra uma política do IAM que permite ao usuário realizar a ação CreateCommand.
Neste exemplo, substitua:
-
por sua Região da AWS, comoregion.ap-south-1 -
pelo número de sua Conta da AWS, comoaccount-id.123456789012 -
por um identificador exclusivo do ID de comando da AWS IoT, comocommand-id. Se quiser enviar mais de um comando, você poderá especificá-los na seção Recursos na política do IAM.LockDoor
Exemplo de criação de comando
O exemplo a seguir mostra como criar um comando. Dependendo da sua aplicação, substitua:
-
por um identificador exclusivo para o comando. Por exemplo, para bloquear o histórico documental de sua casa, você pode especificar<command-id>. Recomendamos usar o UUID. Você também pode usar caracteres alfanuméricos, “-” e “_”.LockDoor -
(Opcional)
e<display-name>, que são campos opcionais que você pode usar para fornecer um nome amigável e uma descrição significativa para o comando, como<description>.Lock the doors of my home -
namespace, que você pode usar para especificar o namespace do comando. Deve serAWS-IoT. -
payloadcontém informações sobre a carga útil que você deseja usar ao executar o comando e seu tipo de conteúdo.
aws iot create-command \ --command-id<command-id>\ --display-name\ --description<display-name><description>\ --namespace AWS-IoT \ --payload '{"content":"eyAibWVzc2FnZSI6ICJIZWxsbyBJb1QiIH0=","contentType":"application/json"}'
A execução desse comando gera uma resposta que contém o ID e o ARN (nome do recurso da Amazon) do comando. Por exemplo, se você especificou o comando durante a criação, o trecho seguinte mostra um exemplo de saída da execução dele.LockDoor
{ "commandId": "LockDoor", "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/LockDoor" }
Recuperar informações sobre um comando
Depois de criar um comando, você pode recuperar informações sobre ele no console da AWS IoT e usando a AWS CLI. Você pode acessar as informações a seguir.
-
O ID do comando, o nome do recurso da Amazon (ARN), qualquer nome de exibição e a descrição que você especificou para o comando.
-
O estado que indica se um comando está disponível para execução no dispositivo de destino, ou se ele está sendo suspenso ou foi excluído.
-
A carga útil que você forneceu e seu tipo de formato.
-
A hora em que o comando foi criado e atualizado pela última vez.
Para recuperar um comando do console, acesse o Hub de comandos
Além dos detalhes do comando, você pode ver o histórico dele, que fornece informações sobre as execuções no dispositivo de destino. Depois de executar esse comando no dispositivo, você encontrará informações sobre as execuções nessa guia.
Use a operação da API do ambiente de gerenciamento HTTP GetCommand ou o comando get-commandAWS CLI para recuperar informações sobre um recurso de comando. Você já deve ter criado o comando usando a solicitação de API CreateCommand ou a CLI create-command.
Exemplo de política do IAM
Antes de usar essa operação de API, garanta que sua política do IAM autorize você a realizar essa ação no dispositivo. O exemplo a seguir mostra uma política do IAM que permite ao usuário realizar a ação GetCommand.
Neste exemplo, substitua:
-
por sua Região da AWS, comoregionap-south-1. -
pelo número de sua Conta da AWS, comoaccount-id.123456789023 -
pelo seu identificador de comando exclusivo da AWS IoT, comocommand-id. Se quiser recuperar mais de um comando, você poderá especificá-los na seção Recurso na política do IAM.LockDoor
Recuperar um exemplo de comando (AWS CLI)
O exemplo a seguir mostra como recuperar informações sobre um comando usando o get-command da AWS CLI. Dependendo da sua aplicação, substitua pelo identificador do comando para o qual você deseja recuperar informações. Você pode acessar essas informações na resposta da CLI <command-id>create-command.
aws iot get-command --command-id<command-id>
A execução desse comando gera uma resposta com informações sobre ele, bem como a carga útil e a hora em que ele foi criado e atualizado pela última vez. Ela também fornece informações que indicam se um comando foi suspenso ou está sendo excluído.
O código a seguir mostra um exemplo de resposta.
{ "commandId": "LockDoor", "commandArn": "arn:aws:iot:<region>:<account>:command/LockDoor", "namespace": "AWS-IoT", "payload":{ "content": "eyAibWVzc2FnZSI6ICJIZWxsbyBJb1QiIH0=", "contentType": "application/json" }, "createdAt": "2024-03-23T00:50:10.095000-07:00", "lastUpdatedAt": "2024-03-23T00:50:10.095000-07:00", "deprecated": false, "pendingDeletion": false }
Listar os comandos em sua Conta da AWS
Depois de criar comandos, você pode visualizá-los na sua conta. Na lista, você encontrará informações sobre:
-
O ID dos comandos e todos os nomes de exibição que você especificou para eles.
-
O nome do recurso da Amazon (ARN) dos comandos.
-
O estado que indica se os comandos estão disponíveis para execução no dispositivo de destino ou se foram suspensos.
nota
A lista não mostra os que estão sendo excluídos da sua conta. Se os comandos estiverem com a exclusão pendente, você ainda poderá visualizar os respectivos detalhes usando o ID do comando.
-
A hora em que os comandos foram criados e atualizados pela última vez.
No console da AWS IoT, você pode encontrar a lista de comandos que você criou e os respectivos detalhes acessando o Hub de comandos
Para listar os comandos que você criou, use a operação de API ListCommands ou a CLI list-commands.
Exemplo de política do IAM
Antes de usar essa operação de API, garanta que sua política do IAM autorize você a realizar essa ação no dispositivo. O exemplo a seguir mostra uma política do IAM que permite ao usuário realizar a ação ListCommands.
Neste exemplo, substitua:
-
por sua Região da AWS, comoregionap-south-1. -
pelo número de sua Conta da AWS, comoaccount-id.123456789012
Exemplo de como listar comandos em sua conta
O comando a seguir mostra como listar comandos em sua conta.
aws iot list-commands --namespace "AWS-IoT"
A execução desse comando gera uma resposta que contém uma lista dos comandos criados, a hora em que eles foram criados e quando foram atualizados pela última vez. Ele também fornece as informações de estado do comando, que indicam se ele foi suspenso ou se está disponível para execução no dispositivo de destino. Para acessar mais informações sobre os diferentes status e os respectivos motivos, consulte Status de execução do comando.
Atualizar um recurso de comando
Depois de criar um comando, você pode atualizar o nome de exibição e a descrição dele.
nota
Não é possível atualizar a carga útil do comando. Para atualizar essas informações ou usar uma carga útil modificada, você precisará criar outro comando.
Para atualizar um comando no console, acesse o Hub de comandos
-
Para atualizar um recurso de comando existente, escolha o comando a ser atualizado e, em Ações, escolha Editar.
-
Especifique o nome de exibição e a descrição que você deseja usar e os pares de nome-valor como tags para seu comando.
-
Escolha Editar para salvar o comando com as novas configurações.
Use a operação da API do ambiente de gerenciamento UpdateCommand ou a update-commandAWS CLI para atualizar um recurso de comando. Usando essa API, você pode:
-
Editar o nome de exibição e a descrição de um comando criado por você.
-
Suspender um recurso de comando ou restaurar um comando que já tenha sido suspenso.
Exemplo de política do IAM
Antes de usar essa operação de API, garanta que sua política do IAM autorize você a realizar essa ação no dispositivo. O exemplo a seguir mostra uma política do IAM que permite ao usuário realizar a ação UpdateCommand.
Neste exemplo, substitua:
-
por sua Região da AWS, comoregionap-south-1. -
pelo número de sua Conta da AWS, comoaccount-id.123456789012 -
pelo seu identificador de comando exclusivo da AWS IoT, comocommand-id. Se quiser recuperar mais de um comando, você poderá especificá-los na seção Recurso na política do IAM.LockDoor
Exemplos de como atualizar informações sobre um comando (AWS CLI)
O exemplo a seguir mostra como atualizar informações sobre um comando usando o comando update-command da AWS CLI. Para ter informações sobre como você pode usar essa API para suspender ou restaurar um recurso de comando, consulte Atualizar um recurso de comando (CLI).
O exemplo mostra como você pode atualizar o nome de exibição e a descrição de um comando. Dependendo da sua aplicação, substitua pelo identificador do comando cujas informações você deseja recuperar.<command-id>
aws iot update-command \ --command-id<command-id>--displayname<display-name>\ --description<description>
A execução desse comando gera uma resposta com as informações atualizadas sobre ele e a respectiva atualização mais recente. O código a seguir mostra um exemplo de solicitação e resposta para atualizar o nome de exibição e a descrição de um comando que desliga o ar condicionado.
aws iot update-command \ --command-id<LockDoor>\ --displayname<Secondary lock door>\ --description<Locks doors to my home>
A execução desse comando gera a resposta a seguir.
{ "commandId": "LockDoor", "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/LockDoor", "displayName": "Secondary lock door", "description": "Locks doors to my home", "lastUpdatedAt": "2024-05-09T23:15:53.899000-07:00" }
Suspender ou restaurar um recurso de comando
Depois de criar um comando, se não quiser mais usá-lo, você poderá marcá-lo como suspenso. Quando você suspende um comando, todas as execuções pendentes dele continuam sendo executadas no dispositivo de destino até atingirem o status terminal. Depois que um comando for suspenso, se você quiser usá-lo para enviar uma nova execução para o dispositivo de destino, deverá restaurá-lo.
nota
Você não pode editar um comando suspenso nem realizar novas execuções dele. Para executar novos comandos no dispositivo, você deve restaurá-lo para que o estado do comando mude para Disponível.
Para acessar informações adicionais sobre a suspensão e a restauração de um comando e considerações sobre ele, consulte Suspender um recurso de comando.
Excluir um recurso de comando
Se você não quiser mais usar um comando, poderá removê-lo permanentemente da sua conta. Se a ação de exclusão for bem-sucedida:
-
Se o comando permanecer suspenso por um período maior que o tempo limite máximo de 12 horas, ele será excluído imediatamente.
-
Se o comando não foi suspenso ou permanecer suspenso por um período menor que o valor do tempo limite máximo, ele entrará no estado
pending deletion. Ele será removido automaticamente da sua conta após o tempo limite máximo de 12 horas.
nota
O comando poderá ser excluído mesmo se houver alguma execução pendente. O comando estará em um estado de exclusão pendente e será removido da sua conta automaticamente.
Para excluir um comando no console, acesse o Hub de comandos
-
Escolha o comando a ser excluído e, em Ações, selecione Excluir.
-
Confirme que você deseja excluir o comando e, depois, selecione Excluir.
O comando será marcado para exclusão e será removido permanentemente da sua conta após 12 horas.
Use a operação da API do ambiente de gerenciamento HTTP DeleteCommand ou o comando delete-command da AWS CLI para excluir um recurso de comando. Se a ação de exclusão for bem-sucedida, você verá um statusCode HTTP de 204 ou 202, e o comando será excluído da sua conta automaticamente após o tempo limite máximo de 12 horas. O status 204 indica que o comando foi excluído.
Exemplo de política do IAM
Antes de usar essa operação de API, garanta que sua política do IAM autorize você a realizar essa ação no dispositivo. O exemplo a seguir mostra uma política do IAM que permite ao usuário realizar a ação DeleteCommand.
Neste exemplo, substitua:
-
por sua Região da AWS, comoregionap-south-1. -
pelo número de sua Conta da AWS, comoaccount-id.123456789012 -
pelo seu identificador de comando exclusivo da AWS IoT, comocommand-id. Se quiser recuperar mais de um comando, você poderá especificá-los na seção Recurso na política do IAM.LockDoor
Exemplo de como excluir um comando (AWS CLI)
Os exemplos a seguir mostram como excluir um comando usando delete-command da AWS CLI. Dependendo da sua aplicação, substitua pelo identificador do comando que você está excluindo.<command-id>
aws iot delete-command --command-id<command-id>
Se a solicitação da API for bem-sucedida, o comando gerará um código de status 202 ou 204. Você pode usar a API GetCommand para verificar se o comando não existe mais na sua conta.