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á.
Crie e execute o trabalho AWS IoT com o AWS IoT Device Client
Os procedimentos desta seção criam um documento de trabalho e um recurso de AWS IoT trabalho. Depois de criar o recurso de trabalho, AWS IoT envia o documento de trabalho para os destinos de trabalho especificados nos quais um agente de trabalhos aplica o documento de trabalho ao dispositivo ou cliente.
Procedimentos desta seção
Crie e armazene o documento de trabalho para o trabalho de IoT
Esse procedimento cria um documento de trabalho simples para incluir em um recurso de AWS IoT trabalho. O documento de trabalho mostra “Olá, mundo” no destino do trabalho.
Para criar e armazenar um documento de trabalho:
-
Selecione o bucket do Amazon S3 no qual você salvará seu documento de trabalho. Se você ainda não tiver um bucket do Amazon S3 existente para isso, será preciso criar um. Para obter informações sobre a criação de buckets do Amazon S3, consulte os tópicos de Introdução ao Amazon S3.
Crie e salve o documento de trabalho deste trabalho
-
Abra um editor de texto no computador host local.
-
Copie e cole o texto a seguir no editor.
{ "operation": "echo", "args": ["Hello world!"] }
-
No computador host local, salve o conteúdo do editor em um arquivo nomeado
hello-world-job.json
. Confirme se o arquivo foi salvo com êxito. Alguns editores de texto acrescentam automaticamente
.txt
ao final do nome de um arquivo ao salvar um arquivo de texto. Se o editor tiver acrescentado.txt
ao nome do arquivo, faça a correção antes de continuar.
-
-
Substitua o
path_to_file
com o caminho parahello-world-job.json
, se não estiver em seu diretório atual, substituas3_bucket_name
com o caminho do bucket do Amazon S3 até o bucket selecionado e, em seguida, execute esse comando para colocar seu documento de trabalho no bucket do Amazon S3.aws s3api put-object \ --key hello-world-job.json \ --body
path_to_file
/hello-world-job.json --buckets3_bucket_name
O documento de trabalho URL que identifica o documento de trabalho que você armazenou no Amazon S3 é determinado substituindo o
s3_bucket_name
eAWS_region
no seguinteURL. Registre o resultado URL para usar posteriormente comojob_document_path
https://
s3_bucket_name
.s3.AWS_Region
.amazonaws.com/hello-world-job.jsonnota
AWS a segurança impede que você consiga abrir isso URL fora do seu Conta da AWS, por exemplo, usando um navegador. O URL é usado pelo mecanismo de AWS IoT trabalhos, que tem acesso ao arquivo, por padrão. Em um ambiente de produção, será preciso garantir que seus serviços do AWS IoT tenham permissão para acessar os documentos de trabalho armazenados no Amazon S3.
Depois de salvar o documento do trabalhoURL, continueExecute um trabalho em AWS IoT um dispositivo de IoT.
Execute um trabalho em AWS IoT um dispositivo de IoT
Os procedimentos nesta seção iniciam o AWS IoT Device Client em seu Raspberry Pi para executar o agente de trabalhos no dispositivo e aguardar a execução dos trabalhos. Ele também cria um recurso de trabalho em AWS IoT, que enviará o trabalho e será executado em seu dispositivo de IoT.
nota
Esse procedimento executa um trabalho em apenas um único dispositivo.
Para iniciar o atendente de trabalhos no Raspberry Pi:
-
Na janela do terminal do computador host local conectado ao Raspberry Pi, execute este comando para iniciar o AWS IoT Device Client.
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-jobs-config.json
-
Na janela do terminal, confirme se o AWS IoT Device Client exibe essas mensagens
2021-11-15T18:45:56.708Z [INFO] {Main.cpp}: Jobs is enabled . . . 2021-11-15T18:45:56.708Z [INFO] {Main.cpp}: Client base has been notified that Jobs has started 2021-11-15T18:45:56.708Z [INFO] {JobsFeature.cpp}: Running Jobs! 2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to startNextPendingJobExecution accepted and rejected 2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to nextJobChanged events 2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusAccepted for jobId + 2021-11-15T18:45:56.738Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionAccepted with code {0} 2021-11-15T18:45:56.739Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusRejected for jobId + 2021-11-15T18:45:56.753Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToNextJobChanged with code {0} 2021-11-15T18:45:56.760Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobRejected with code {0} 2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobAccepted with code {0} 2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionRejected with code {0} 2021-11-15T18:45:56.777Z [DEBUG] {JobsFeature.cpp}: Publishing startNextPendingJobExecutionRequest 2021-11-15T18:45:56.785Z [DEBUG] {JobsFeature.cpp}: Ack received for StartNextPendingJobPub with code {0} 2021-11-15T18:45:56.785Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
-
Na janela do terminal, depois de ver a seguinte mensagem, avance para o próximo procedimento e crie o recurso de trabalho. Observe que esta pode não ser a última entrada da lista.
2021-11-15T18:45:56.785Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
Para criar um recurso AWS IoT de trabalho
-
No computador host local:
-
Substituir
job_document_url
com o documento URL de trabalho deCrie e armazene o documento de trabalho para o trabalho de IoT. -
Substituir
thing_arn
com o recurso ARN da coisa que você criou para o seu dispositivo e, em seguida, execute esse comando.aws iot create-job \ --job-id hello-world-job-1 \ --document-source "
job_document_url
" \ --targets "thing_arn
" \ --target-selection SNAPSHOTEm caso de êxito, o comando retornará um resultado semelhante a este.
{ "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1", "jobId": "hello-world-job-1" }
-
-
Na janela do terminal, você deve ver uma saída do AWS IoT Device Client como esta.
2021-11-15T18:02:26.688Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Job ids differ 2021-11-15T18:10:24.890Z [INFO] {JobsFeature.cpp}: Executing job: hello-world-job-1 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status! 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Assuming executable is in PATH 2021-11-15T18:10:24.890Z [INFO] {JobsFeature.cpp}: About to execute: echo Hello world! 2021-11-15T18:10:24.890Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken 3TEWba9Xj6 in the updateJobExecution promises map 2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process now running 2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process about to call execvp 2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Parent process now running, child PID is 16737 2021-11-15T18:10:24.891Z [DEBUG] {16737}: Hello world! 2021-11-15T18:10:24.891Z [DEBUG] {JobEngine.cpp}: JobEngine finished waiting for child process, returning 0 2021-11-15T18:10:24.891Z [INFO] {JobsFeature.cpp}: Job exited with status: 0 2021-11-15T18:10:24.891Z [INFO] {JobsFeature.cpp}: Job executed successfully! 2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status! 2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details 2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details 2021-11-15T18:10:24.892Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success 2021-11-15T18:10:24.892Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken GmQ0HTzWGg in the updateJobExecution promises map 2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0} 2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken 3TEWba9Xj6 from the updateJobExecution promises map 2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1 2021-11-15T18:10:24.917Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0} 2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken GmQ0HTzWGg from the updateJobExecution promises map 2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1 2021-11-15T18:10:25.861Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
-
Enquanto o AWS IoT Device Client estiver em execução e aguardando um trabalho, você pode enviar outro trabalho alterando o
job-id
valor e reexecutando o create-job da Etapa 1.
Quando terminar de executar os trabalhos, na janela do terminal, digite ^C (Control-c) para interromper o AWS IoT Device Client.