Buat dan jalankan pekerjaan AWS IoT dengan AWS IoT Device Client - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat dan jalankan pekerjaan AWS IoT dengan AWS IoT Device Client

Prosedur di bagian ini membuat dokumen pekerjaan dan sumber daya AWS IoT pekerjaan. Setelah Anda membuat sumber daya pekerjaan, AWS IoT kirimkan dokumen pekerjaan ke target pekerjaan yang ditentukan di mana agen pekerjaan menerapkan dokumen pekerjaan ke perangkat atau klien.

Membuat dan menyimpan dokumen pekerjaan untuk pekerjaan IoT

Prosedur ini membuat dokumen pekerjaan sederhana untuk disertakan dalam sumber daya AWS IoT pekerjaan. Dokumen pekerjaan ini menampilkan “Hello world!” pada target pekerjaan.

Untuk membuat dan menyimpan dokumen pekerjaan:
  1. Pilih bucket Amazon S3 tempat Anda akan menyimpan dokumen pekerjaan Anda. Jika Anda tidak memiliki bucket Amazon S3 yang ada untuk digunakan untuk ini, Anda harus membuatnya. Untuk informasi tentang cara membuat bucket Amazon S3, lihat topik di Memulai Amazon S3.

  2. Buat dan simpan dokumen pekerjaan untuk pekerjaan ini

    1. Di komputer host lokal Anda, buka editor teks.

    2. Salin dan tempel teks ini ke editor.

      { "operation": "echo", "args": ["Hello world!"] }
    3. Di komputer host lokal, simpan konten editor ke file bernamahello-world-job.json.

    4. Konfirmasikan bahwa file telah disimpan dengan benar. Beberapa editor teks secara otomatis menambahkan .txt ke nama file ketika mereka menyimpan file teks. Jika editor Anda ditambahkan .txt ke nama file, perbaiki nama file sebelum melanjutkan.

  3. Ganti path_to_file dengan jalur kehello-world-job.json, jika tidak ada di direktori Anda saat ini, ganti s3_bucket_name dengan jalur bucket Amazon S3 ke bucket yang Anda pilih, lalu jalankan perintah ini untuk memasukkan dokumen pekerjaan Anda ke dalam bucket Amazon S3.

    aws s3api put-object \ --key hello-world-job.json \ --body path_to_file/hello-world-job.json --bucket s3_bucket_name

    Dokumen pekerjaan URL yang mengidentifikasi dokumen pekerjaan yang Anda simpan di Amazon S3 ditentukan dengan mengganti s3_bucket_name and AWS_region berikut iniURL. Rekam hasil URL untuk digunakan nanti sebagai job_document_path

    https://s3_bucket_name.s3.AWS_Region.amazonaws.com/hello-world-job.json
    catatan

    AWS keamanan mencegah Anda untuk dapat membuka ini URL di luar Anda Akun AWS, misalnya dengan menggunakan browser. URLIni digunakan oleh mesin AWS IoT pekerjaan, yang memiliki akses ke file, secara default. Dalam lingkungan produksi, Anda harus memastikan bahwa AWS IoT layanan Anda memiliki izin untuk mengakses dokumen pekerjaan yang disimpan di Amazon S3.

Setelah Anda menyimpan dokumen pekerjaanURL, lanjutkan keJalankan pekerjaan AWS IoT untuk satu perangkat IoT.

Jalankan pekerjaan AWS IoT untuk satu perangkat IoT

Prosedur di bagian ini memulai Klien AWS IoT Perangkat di Raspberry Pi Anda untuk menjalankan agen pekerjaan di perangkat untuk menunggu pekerjaan berjalan. Ini juga menciptakan sumber daya pekerjaan di AWS IoT, yang akan mengirim pekerjaan ke dan berjalan di perangkat IoT Anda.

catatan

Prosedur ini menjalankan pekerjaan hanya pada satu perangkat.

Untuk memulai agen pekerjaan di Raspberry Pi Anda:
  1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, jalankan perintah ini untuk memulai AWS IoT Device Client.

    cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-jobs-config.json
  2. Di jendela terminal, konfirmasikan bahwa AWS IoT Device Client dan menampilkan pesan-pesan ini

    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
  3. Di jendela terminal, setelah Anda melihat pesan ini, lanjutkan ke prosedur berikutnya dan buat sumber daya pekerjaan. Perhatikan bahwa itu mungkin bukan entri terakhir dalam daftar.

    2021-11-15T18:45:56.785Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
Untuk membuat sumber daya AWS IoT pekerjaan
  1. Di komputer host lokal Anda:

    1. Ganti job_document_url dengan dokumen pekerjaan URL dariMembuat dan menyimpan dokumen pekerjaan untuk pekerjaan IoT.

    2. Ganti thing_arn dengan sumber daya benda yang Anda buat untuk perangkat Anda dan kemudian jalankan perintah ini. ARN

      aws iot create-job \ --job-id hello-world-job-1 \ --document-source "job_document_url" \ --targets "thing_arn" \ --target-selection SNAPSHOT

      Jika berhasil, perintah mengembalikan hasil seperti ini.

      { "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1", "jobId": "hello-world-job-1" }
  2. Di jendela terminal, Anda akan melihat output dari AWS IoT Device Client seperti ini.

    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
  3. Saat Klien AWS IoT Perangkat sedang berjalan dan menunggu pekerjaan, Anda dapat mengirimkan pekerjaan lain dengan mengubah job-id nilai dan menjalankan kembali create-job dari Langkah 1.

Ketika Anda selesai menjalankan pekerjaan, di jendela terminal, masukkan ^C (Control-c) untuk menghentikan AWS IoT Device Client.