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.
Prosedur di bagian ini
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:
-
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.
Buat dan simpan dokumen pekerjaan untuk pekerjaan ini
-
Di komputer host lokal Anda, buka editor teks.
-
Salin dan tempel teks ini ke editor.
{ "operation": "echo", "args": ["Hello world!"] }
-
Di komputer host lokal, simpan konten editor ke file bernama
hello-world-job.json
. 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.
-
-
Ganti
path_to_file
dengan jalur kehello-world-job.json
, jika tidak ada di direktori Anda saat ini, gantis3_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 --buckets3_bucket_name
Dokumen pekerjaan URL yang mengidentifikasi dokumen pekerjaan yang Anda simpan di Amazon S3 ditentukan dengan mengganti
s3_bucket_name
andAWS_region
berikut iniURL. Rekam hasil URL untuk digunakan nanti sebagaijob_document_path
https://
s3_bucket_name
.s3.AWS_Region
.amazonaws.com/hello-world-job.jsoncatatan
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:
-
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
-
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
-
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
-
Di komputer host lokal Anda:
-
Ganti
job_document_url
dengan dokumen pekerjaan URL dariMembuat dan menyimpan dokumen pekerjaan untuk pekerjaan IoT. -
Ganti
thing_arn
dengan sumber daya benda yang Anda buat untuk perangkat Anda dan kemudian jalankan perintah ini. ARNaws iot create-job \ --job-id hello-world-job-1 \ --document-source "
job_document_url
" \ --targets "thing_arn
" \ --target-selection SNAPSHOTJika berhasil, perintah mengembalikan hasil seperti ini.
{ "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1", "jobId": "hello-world-job-1" }
-
-
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
-
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.