Buat dan kelola pekerjaan dengan menggunakanAWS CLI - 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 kelola pekerjaan dengan menggunakanAWS CLI

Bagian ini menjelaskan cara membuat dan mengelola pekerjaan.

Ciptakan lowongan kerja

Untuk membuatAWS IoTpekerjaan, gunakanCreateJobperintah. Pekerjaan ini antri untuk eksekusi pada target (hal-hal atau kelompok hal) yang Anda tentukan. Untuk membuatAWS IoTpekerjaan, Anda memerlukan dokumen pekerjaan yang dapat dimasukkan dalam badan permintaan atau sebagai tautan ke dokumen Amazon S3. Jika tugas termasuk mengunduh file menggunakan URL Amazon S3 yang telah ditandatangani sebelumnya, Anda memerlukan peran IAM Amazon Resource Name (ARN) yang memiliki izin untuk mengunduh file dan memberikan izin kepadaAWS IoTJobs layanan untuk mengambil peran.

Untuk informasi lebih lanjut tentang sintaks saat memasukkan tanggal dan waktu menggunakan perintah API atauAWS CLI, lihatStempel waktu.

Penandatanganan kode dengan pekerjaan

Jika Anda menggunakan penandatanganan kode untukAWS IoT, Anda harus memulai pekerjaan penandatanganan kode dan menyertakan output dalam dokumen pekerjaan Anda. Ini akan menggantikan placeholder tanda tangan tanda tangan kode dalam dokumen pekerjaan Anda, yang diperlukan sebagai placeholder sampai diganti dengan path file kode yang ditandatangani menggunakan AndaProfil penandatanganan kode. Tanda kode tanda tangan placeholder akan terlihat seperti berikut:

${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}

Gunakanstart-signing-jobperintah untuk membuat pekerjaan kode penandatanganan.start-signing-jobmengembalikan ID pekerjaan. Untuk mendapatkan lokasi Amazon S3 tempat tanda tangan disimpan, gunakandescribe-signing-jobperintah. Anda kemudian dapat mengunduh tanda tangan dari Amazon S3. Untuk informasi selengkapnya tentang lowongan penandatanganan kode, lihatPenandatanganan kode untukAWS IoT.

Dokumen pekerjaan Anda harus berisi placeholder URL yang telah ditandatangani sebelumnya untuk file kode Anda dan keluaran tanda tangan JSON yang ditempatkan di bucket Amazon S3 menggunakanstart-signing-jobperintah:

{ "presign": "${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/bucket/image}", }

Buat pekerjaan dengan dokumen pekerjaan

Perintah berikut menunjukkan cara membuat pekerjaan menggunakan dokumen pekerjaan (job-document.json) disimpan dalam bucket Amazon S3 (JobBucket), dan peran dengan izin untuk mengunduh file dari Amazon S3 (S3DownloadRole).

aws iot create-job \ --job-id 010 \ --targets arn:aws:iot:us-east-1:123456789012:thing/thingOne \ --document-source https://s3.amazonaws.com/my-s3-bucket/job-document.json \ --timeout-config inProgressTimeoutInMinutes=100 \ --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}}, \"maximumPerMinute\": 1000}" \ --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"

Pekerjaan dijalankan padaThingOne.

Opsionaltimeout-configparameter menentukan jumlah waktu setiap perangkat harus menyelesaikan pelaksanaannya dari pekerjaan. Timer dimulai ketika status eksekusi pekerjaan diatur keIN_PROGRESS. Jika status eksekusi pekerjaan tidak disetel ke status terminal lain sebelum waktu berakhir, maka akan diatur keTIMED_OUT.

Timer dalam proses tidak dapat diperbarui dan berlaku untuk semua eksekusi pekerjaan untuk pekerjaan tersebut. Setiap kali eksekusi pekerjaan tetap diIN_PROGRESSnegara lebih lama dari interval ini, gagal dan beralih ke terminalTIMED_OUTstatus.AWS IoTjuga menerbitkan pemberitahuan MQTT.

Untuk informasi selengkapnya tentang membuat konfigurasi untuk peluncuran pekerjaan dan pembatalan, lihatPeluncuran Pekerjaan dan Batalkan Konfigurasi.

catatan

Dokumen pekerjaan yang ditetapkan sebagai file Amazon S3 diambil pada saat Anda membuat pekerjaan. Jika Anda mengubah konten file Amazon S3 yang Anda gunakan sebagai sumber dokumen pekerjaan setelah Anda membuat dokumen pekerjaan, maka apa yang dikirim ke target pekerjaan tidak berubah.

Memperbarui pekerjaan

Untuk memperbarui pekerjaan, gunakanUpdateJobperintah. Anda dapat memperbaruidescription,presignedUrlConfig,jobExecutionsRolloutConfig,abortConfig, dantimeoutConfigbidang pekerjaan.

aws iot update-job \ --job-id 010 \ --description "updated description" \ --timeout-config inProgressTimeoutInMinutes=100 \ --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}, \"maximumPerMinute\": 1000}}" \ --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"

Untuk informasi lebih lanjut, lihatPeluncuran Pekerjaan dan Batalkan Konfigurasi.

Membatalkan tugas

Untuk membatalkan pekerjaan, gunakanCancelJobperintah. Membatalkan pemberhentian pekerjaanAWS IoTdari meluncurkan eksekusi pekerjaan baru untuk pekerjaan itu. Ini juga membatalkan eksekusi pekerjaan apa pun yang adaQUEUEDnegara.AWS IoTmembuat eksekusi pekerjaan apa pun dalam status terminal tidak tersentuh karena perangkat telah menyelesaikan pekerjaan. Jika status eksekusi pekerjaanIN_PROGRESS, itu juga tetap tidak tersentuh kecuali Anda menggunakan opsional--forceparameter.

Perintah berikut menunjukkan cara membatalkan pekerjaan dengan ID 010.

aws iot cancel-job --job-id 010

Perintah menampilkan output sebagai berikut:

{ "jobArn": "string", "jobId": "string", "description": "string" }

Ketika Anda membatalkan pekerjaan, eksekusi pekerjaan yang berada diQUEUEDnegara dibatalkan. Eksekusi pekerjaan yang ada diIN_PROGRESSnegara dibatalkan, tetapi hanya jika Anda menentukan opsional--forceparameter. Eksekusi pekerjaan dalam status terminal tidak dibatalkan.

Awas

Membatalkan pekerjaan yang ada diIN_PROGRESSnegara (dengan mengatur--forceparameter) membatalkan eksekusi pekerjaan apa pun yang sedang berlangsung dan menyebabkan perangkat yang menjalankan tugas tidak dapat memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan bahwa setiap perangkat yang menjalankan tugas yang dibatalkan dapat pulih ke status yang valid.

Status pekerjaan yang dibatalkan atau salah satu eksekusi pekerjaannya pada akhirnya konsisten.AWS IoTberhenti menjadwalkan eksekusi pekerjaan baru danQUEUEDeksekusi pekerjaan untuk pekerjaan itu ke perangkat sesegera mungkin. Mengubah status eksekusi pekerjaanCANCELEDmungkin memakan waktu, tergantung pada jumlah perangkat dan faktor lainnya.

Jika pekerjaan dibatalkan karena memenuhi kriteria yang ditentukan olehAbortConfigobjek, layanan menambahkan nilai auto-populated untukcommentdanreasonCodebidang. Anda dapat membuat nilai Anda sendiri untukreasonCodesaat pembatalan pekerjaan digerakkan oleh pengguna.

Membatalkan eksekusi pekerjaan

Untuk membatalkan eksekusi pekerjaan di perangkat, gunakanCancelJobExecutionperintah. Ini membatalkan eksekusi pekerjaan yang ada diQUEUEDnegara. Jika Anda ingin membatalkan eksekusi pekerjaan yang sedang berlangsung, Anda harus menggunakan--forceparameter.

Perintah berikut menunjukkan bagaimana untuk membatalkan eksekusi pekerjaan dari pekerjaan 010 berjalan padamyThing.

aws iot cancel-job-execution --job-id 010 --thing-name myThing

Perintah tidak menampilkan output.

Eksekusi pekerjaan yang ada diQUEUEDnegara dibatalkan. Eksekusi pekerjaan yang ada diIN_PROGRESSnegara dibatalkan, tetapi hanya jika Anda menentukan opsional--forceparameter. Eksekusi pekerjaan dalam status terminal tidak dapat dibatalkan.

Awas

Saat Anda membatalkan eksekusi pekerjaan yang ada diIN_PROGRESSnegara, perangkat tidak dapat memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan perangkat dapat pulih ke keadaan yang valid.

Jika eksekusi pekerjaan dalam keadaan terminal, atau jika eksekusi pekerjaan dalamIN_PROGRESSnegara dan--forceparameter tidak disetel ketrue, perintah ini menyebabkanInvalidStateTransitionException.

Status eksekusi pekerjaan yang dibatalkan pada akhirnya konsisten. Mengubah status eksekusi pekerjaanCANCELEDmungkin memakan waktu, tergantung pada berbagai faktor.

Menghapus pekerjaan

Untuk menghapus pekerjaan dan eksekusi pekerjaannya, gunakanDeleteJobperintah. Secara default, Anda hanya dapat menghapus pekerjaan yang berada dalam status terminal (SUCCEEDEDatauCANCELED). Jika tidak, pengecualian terjadi. Anda dapat menghapus pekerjaan diIN_PROGRESSnegara, bagaimanapun, hanya jikaforceparameter diatur ketrue.

Untuk menghapus pekerjaan, jalankan perintah berikut:

aws iot delete-job --job-id 010 --force|--no-force

Perintah tidak menampilkan output.

Awas

Ketika Anda menghapus pekerjaan yang ada diIN_PROGRESSstate, perangkat yang menerapkan pekerjaan tidak dapat mengakses informasi pekerjaan atau memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan bahwa setiap perangkat yang menerapkan pekerjaan yang telah dihapus dapat pulih ke status yang valid.

Diperlukan beberapa waktu untuk menghapus pekerjaan, tergantung pada jumlah eksekusi pekerjaan yang dibuat untuk pekerjaan dan faktor lainnya. Sementara pekerjaan sedang dihapus,DELETION_IN_PROGRESSmuncul sebagai status pekerjaan. Hasil galat jika Anda mencoba menghapus atau membatalkan pekerjaan dengan status yang sudahDELETION_IN_PROGRESS.

Hanya 10 pekerjaan yang dapat memiliki statusDELETION_IN_PROGRESSpada saat yang sama. Jika tidak,LimitExceededExceptionterjadi.

Dapatkan dokumen pekerjaan

Untuk mengambil dokumen pekerjaan untuk suatu pekerjaan, gunakanGetJobDocumentperintah. Dokumen pekerjaan adalah deskripsi operasi jarak jauh yang akan dilakukan oleh perangkat.

Untuk mendapatkan dokumen pekerjaan, jalankan perintah berikut:

aws iot get-job-document --job-id 010

Perintah mengembalikan dokumen pekerjaan untuk pekerjaan yang ditentukan:

{ "document": "{\n\t\"operation\":\"install\",\n\t\"url\":\"http://amazon.com/firmWareUpate-01\",\n\t\"data\":\"${aws:iot:s3-presigned-url:https://s3.amazonaws.com/job-test-bucket/datafile}\"\n}" }
catatan

Saat Anda menggunakan perintah ini untuk mengambil dokumen pekerjaan, URL placeholder tidak diganti dengan URL Amazon S3 yang telah ditandatangani sebelumnya. Saat perangkat memanggilGetPendingJobExecutionsOperasi API, URL placeholder diganti dengan URL Amazon S3 yang telah ditandatangani sebelumnya dalam dokumen pekerjaan.

Lowongan kerja List

Untuk mendapatkan daftar semua pekerjaan diAkun AWS, gunakanListJobsperintah. Data pekerjaan dan data eksekusi pekerjaan disimpan untukwaktu terbatas. Jalankan perintah berikut untuk mencantumkan semua pekerjaan diAkun AWS:

aws iot list-jobs

Perintah mengembalikan semua pekerjaan di akun Anda, diurutkan berdasarkan status pekerjaan:

{ "jobs": [ { "status": "IN_PROGRESS", "lastUpdatedAt": 1486687079.743, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/013", "createdAt": 1486687079.743, "targetSelection": "SNAPSHOT", "jobId": "013" }, { "status": "SUCCEEDED", "lastUpdatedAt": 1486685868.444, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/012", "createdAt": 1486685868.444, "completedAt": 148668789.690, "targetSelection": "SNAPSHOT", "jobId": "012" }, { "status": "CANCELED", "lastUpdatedAt": 1486678850.575, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/011", "createdAt": 1486678850.575, "targetSelection": "SNAPSHOT", "jobId": "011" } ] }

Jelaskan pekerjaan

Untuk mendapatkan status pekerjaan, jalankanDescribeJobperintah. Perintah berikut menunjukkan bagaimana untuk menggambarkan pekerjaan:

$ aws iot describe-job --job-id 010

Perintah mengembalikan status pekerjaan yang ditentukan. Misalnya:

{ "documentSource": "https://s3.amazonaws.com/job-test-bucket/job-document.json", "job": { "status": "IN_PROGRESS", "jobArn": "arn:aws:iot:us-east-1:123456789012:job/010", "targets": [ "arn:aws:iot:us-east-1:123456789012:thing/myThing" ], "jobProcessDetails": { "numberOfCanceledThings": 0, "numberOfFailedThings": 0, "numberOfInProgressThings": 0, "numberOfQueuedThings": 0, "numberOfRejectedThings": 0, "numberOfRemovedThings": 0, "numberOfSucceededThings": 0, "numberOfTimedOutThings": 0, "processingTargets": [ arn:aws:iot:us-east-1:123456789012:thing/thingOne, arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupOne, arn:aws:iot:us-east-1:123456789012:thing/thingTwo, arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupTwo ] }, "presignedUrlConfig": { "expiresInSec": 60, "roleArn": "arn:aws:iam::123456789012:role/S3DownloadRole" }, "jobId": "010", "lastUpdatedAt": 1486593195.006, "createdAt": 1486593195.006, "targetSelection": "SNAPSHOT", "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": integer, "incrementFactor": integer, "rateIncreaseCriteria": { "numberOfNotifiedThings": integer, // Set one or the other "numberOfSucceededThings": integer // of these two values. }, "maximumPerMinute": integer } }, "abortConfig": { "criteriaList": [ { "action": "string", "failureType": "string", "minNumberOfExecutedThings": integer, "thresholdPercentage": integer } ] }, "timeoutConfig": { "inProgressTimeoutInMinutes": number } } }

Eksekusi daftar untuk pekerjaan

Pekerjaan yang berjalan pada perangkat tertentu diwakili oleh objek eksekusi pekerjaan. JalankanListJobExecutionsForJobperintah untuk daftar semua eksekusi pekerjaan untuk pekerjaan. Berikut ini menunjukkan bagaimana daftar eksekusi untuk pekerjaan:

aws iot list-job-executions-for-job --job-id 010

Perintah mengembalikan daftar eksekusi pekerjaan:

{ "executionSummaries": [ { "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486593196.378, "queuedAt": 1486593196.378, "executionNumber": 1234567890 } }, { "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingTwo", "jobExecutionSummary": { "status": "IN_PROGRESS", "lastUpdatedAt": 1486593345.659, "queuedAt": 1486593196.378, "startedAt": 1486593345.659, "executionNumber": 4567890123 } } ] }

Mencantumkan eksekusi pekerjaan untuk suatu hal

JalankanListJobExecutionsForThingperintah untuk daftar semua eksekusi pekerjaan yang berjalan pada suatu hal. Berikut ini menunjukkan cara membuat daftar eksekusi pekerjaan untuk suatu hal:

aws iot list-job-executions-for-thing --thing-name thingOne

Perintah mengembalikan daftar eksekusi pekerjaan yang sedang berjalan atau telah berjalan pada hal yang ditentukan:

{ "executionSummaries": [ { "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486687082.071, "queuedAt": 1486687082.071, "executionNumber": 9876543210 }, "jobId": "013" }, { "jobExecutionSummary": { "status": "IN_PROGRESS", "startAt": 1486685870.729, "lastUpdatedAt": 1486685870.729, "queuedAt": 1486685870.729, "executionNumber": 1357924680 }, "jobId": "012" }, { "jobExecutionSummary": { "status": "SUCCEEDED", "startAt": 1486678853.415, "lastUpdatedAt": 1486678853.415, "queuedAt": 1486678853.415, "executionNumber": 4357680912 }, "jobId": "011" }, { "jobExecutionSummary": { "status": "CANCELED", "startAt": 1486593196.378, "lastUpdatedAt": 1486593196.378, "queuedAt": 1486593196.378, "executionNumber": 2143174250 }, "jobId": "010" } ] }

Jelaskan eksekusi pekerjaan

JalankanDescribeJobExecutionperintah untuk mendapatkan status eksekusi pekerjaan. Anda harus menentukan ID pekerjaan dan nama benda dan, opsional, nomor eksekusi untuk mengidentifikasi eksekusi pekerjaan. Berikut ini menunjukkan cara menggambarkan eksekusi pekerjaan:

aws iot describe-job-execution --job-id 017 --thing-name thingOne

Perintah mengembalikanJobExecution. Misalnya:

{ "execution": { "jobId": "017", "executionNumber": 4516820379, "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "versionNumber": 123, "createdAt": 1489084805.285, "lastUpdatedAt": 1489086279.937, "startedAt": 1489086279.937, "status": "IN_PROGRESS", "approximateSecondsBeforeTimedOut": 100, "statusDetails": { "status": "IN_PROGRESS", "detailsMap": { "percentComplete": "10" } } } }

Hapus eksekusi pekerjaan

JalankanDeleteJobExecutionperintah untuk menghapus eksekusi pekerjaan. Anda harus menentukan ID pekerjaan, nama hal, dan nomor eksekusi untuk mengidentifikasi eksekusi pekerjaan. Berikut ini menunjukkan cara menghapus eksekusi pekerjaan:

aws iot delete-job-execution --job-id 017 --thing-name thingOne --execution-number 1234567890 --force|--no-force

Perintah tidak menampilkan output.

Secara default, status eksekusi pekerjaan harusQUEUEDatau dalam keadaan terminal (SUCCEEDED,FAILED,REJECTED,TIMED_OUT,REMOVED, atauCANCELED). Jika tidak, muncul kesalahan. Untuk menghapus eksekusi pekerjaan dengan statusIN_PROGRESS, Anda dapat mengaturforceparameter ketrue.

Awas

Ketika Anda menghapus eksekusi pekerjaan dengan statusIN_PROGRESS, perangkat yang menjalankan tugas tidak dapat mengakses informasi pekerjaan atau memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan perangkat dapat pulih ke keadaan yang valid.