Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat dan mengelola pekerjaan dengan menggunakan AWS CLI
Bagian ini menjelaskan cara membuat dan mengelola pekerjaan.
Buat pekerjaan
Untuk membuat AWS IoT pekerjaan, gunakan CreateJob perintah. Pekerjaan diantrian untuk eksekusi pada target (hal-hal atau kelompok hal) yang Anda tentukan. Untuk membuat AWS IoT pekerjaan, Anda memerlukan dokumen pekerjaan yang dapat dimasukkan dalam badan permintaan atau sebagai tautan ke dokumen Amazon S3. Jika pekerjaan termasuk mengunduh file menggunakan Amazon URLs S3 yang telah ditandatangani sebelumnya, Anda memerlukan IAM peran Amazon Resource Name ARN () yang memiliki izin untuk mengunduh file dan memberikan izin ke layanan Pekerjaan untuk AWS IoT mengambil peran tersebut.
Untuk informasi selengkapnya tentang sintaks saat memasukkan tanggal dan waktu menggunakan API perintah atau AWS CLI, lihat Stempel waktu.
Penandatanganan kode dengan pekerjaan
Jika Anda menggunakan penandatanganan kode untuk AWS IoT, Anda harus memulai pekerjaan penandatanganan kode dan menyertakan output dalam dokumen pekerjaan Anda. Ini akan menggantikan placeholder tanda tangan tanda tangan kode di dokumen pekerjaan Anda, yang diperlukan sebagai placeholder sampai diganti dengan jalur file kode yang ditandatangani menggunakan profil penandatanganan Kode Anda. Placeholder tanda tangan tanda tangan kode akan terlihat seperti berikut:
${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}
Gunakan start-signing-jobperintah untuk membuat pekerjaan penandatanganan kode. start-signing-job
mengembalikan ID pekerjaan. Untuk mendapatkan lokasi Amazon S3 tempat tanda tangan disimpan, gunakan perintah. describe-signing-job Anda kemudian dapat mengunduh tanda tangan dari Amazon S3. Untuk informasi selengkapnya tentang pekerjaan penandatanganan kode, lihat Penandatanganan kode untuk AWS IoT.
Dokumen pekerjaan Anda harus berisi URL placeholder yang telah ditetapkan sebelumnya untuk file kode Anda dan keluaran JSON tanda tangan yang ditempatkan di bucket Amazon S3 menggunakan perintah: start-signing-job
{ "presign": "${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/bucket/image}", }
Buat pekerjaan dengan dokumen pekerjaan
Perintah berikut menunjukkan cara membuat job menggunakan job document (job-document.json
) yang disimpan di bucket Amazon S3 (jobBucket
), dan peran dengan izin untuk mengunduh file dari Amazon S3DownloadRole
S3 ().
aws iot create-job \ --job-id 010 \ --targets
arn:aws:iot:us-east-1:123456789012:thing/thingOne
\ --document-sourcehttps://s3.amazonaws.com/amzn-s3-demo-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 dijalankanthingOne
.
timeout-config
Parameter opsional menentukan jumlah waktu yang dimiliki setiap perangkat untuk menyelesaikan pelaksanaan pekerjaannya. Timer dimulai ketika status eksekusi pekerjaan diatur keIN_PROGRESS
. Jika status eksekusi pekerjaan tidak disetel ke status terminal lain sebelum waktu kedaluwarsa, status tersebut disetel keTIMED_OUT
.
Timer yang sedang berlangsung tidak dapat diperbarui dan berlaku untuk semua eksekusi pekerjaan untuk pekerjaan tersebut. Setiap kali eksekusi pekerjaan tetap dalam IN_PROGRESS
status lebih lama dari interval ini, itu gagal dan beralih ke TIMED_OUT
status terminal. AWS IoT juga menerbitkan MQTT pemberitahuan.
Untuk informasi selengkapnya tentang membuat konfigurasi untuk peluncuran dan pembatalan pekerjaan, lihat Peluncuran Pekerjaan dan Batalkan Konfigurasi.
catatan
Dokumen Job 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 Anda setelah Anda membuat dokumen pekerjaan, maka apa yang dikirim ke target pekerjaan tidak berubah.
Perbarui pekerjaan
Untuk memperbarui pekerjaan, gunakan UpdateJob perintah. Anda dapat memperbaruidescription
,presignedUrlConfig
, jobExecutionsRolloutConfig
abortConfig
,, dan timeoutConfig
bidang 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 selengkapnya, lihat Peluncuran Pekerjaan dan Batalkan Konfigurasi.
Membatalkan tugas
Untuk membatalkan pekerjaan, gunakan CancelJob perintah. Membatalkan pekerjaan berhenti AWS IoT dari meluncurkan eksekusi pekerjaan baru untuk pekerjaan itu. Ini juga membatalkan eksekusi pekerjaan apa pun yang berada dalam suatu QUEUED
negara bagian. AWS IoT membuat 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 --force
parameter opsional.
Perintah berikut menunjukkan cara membatalkan pekerjaan dengan ID 010.
aws iot cancel-job --job-id 010
Perintah menampilkan output berikut:
{ "jobArn": "string", "jobId": "string", "description": "string" }
Ketika Anda membatalkan pekerjaan, eksekusi pekerjaan yang berada dalam QUEUED
keadaan dibatalkan. Eksekusi Job yang berada dalam IN_PROGRESS
keadaan dibatalkan, tetapi hanya jika Anda menentukan parameter opsional--force
. Eksekusi Job dalam status terminal tidak dibatalkan.
Awas
Membatalkan pekerjaan yang berada dalam IN_PROGRESS
status (dengan menyetel --force
parameter) membatalkan eksekusi pekerjaan apa pun yang sedang berlangsung dan menyebabkan perangkat yang menjalankan pekerjaan tidak dapat memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan bahwa setiap perangkat yang menjalankan pekerjaan yang dibatalkan dapat pulih ke status yang valid.
Status pekerjaan yang dibatalkan atau salah satu eksekusi pekerjaannya pada akhirnya konsisten. AWS IoT berhenti menjadwalkan eksekusi pekerjaan baru dan eksekusi QUEUED
pekerjaan untuk pekerjaan itu ke perangkat sesegera mungkin. Mengubah status eksekusi pekerjaan CANCELED
mungkin memakan waktu, tergantung pada jumlah perangkat dan faktor lainnya.
Jika pekerjaan dibatalkan karena memenuhi kriteria yang ditentukan oleh AbortConfig
objek, layanan akan menambahkan nilai yang diisi otomatis untuk bidang dan. comment
reasonCode
Anda dapat membuat nilai sendiri reasonCode
saat pembatalan pekerjaan digerakkan oleh pengguna.
Batalkan eksekusi pekerjaan
Untuk membatalkan eksekusi pekerjaan pada perangkat, gunakan CancelJobExecution perintah. Ini membatalkan eksekusi pekerjaan yang dalam QUEUED
keadaan. Jika Anda ingin membatalkan eksekusi pekerjaan yang sedang berlangsung, Anda harus menggunakan --force
parameter.
Perintah berikut menunjukkan cara membatalkan eksekusi pekerjaan dari pekerjaan 010 berjalanmyThing
.
aws iot cancel-job-execution --job-id 010 --thing-name myThing
Perintah tidak menampilkan output.
Eksekusi pekerjaan yang berada dalam QUEUED
keadaan dibatalkan. Eksekusi pekerjaan yang berada dalam IN_PROGRESS
status dibatalkan, tetapi hanya jika Anda menentukan --force
parameter opsional. Eksekusi Job dalam status terminal tidak dapat dibatalkan.
Awas
Saat Anda membatalkan eksekusi pekerjaan yang berada dalam IN_PROGRESS
status, perangkat tidak dapat memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan perangkat dapat pulih ke keadaan yang valid.
Jika eksekusi pekerjaan berada dalam status terminal, atau jika eksekusi pekerjaan dalam IN_PROGRESS
status dan --force
parameter tidak disetel ketrue
, perintah ini menyebabkanInvalidStateTransitionException
.
Status eksekusi pekerjaan yang dibatalkan pada akhirnya konsisten. Mengubah status eksekusi pekerjaan CANCELED
mungkin memakan waktu, tergantung pada berbagai faktor.
Hapus pekerjaan
Untuk menghapus pekerjaan dan eksekusi pekerjaannya, gunakan DeleteJob perintah. Secara default, Anda hanya dapat menghapus pekerjaan yang berada dalam status terminal (SUCCEEDED
atauCANCELED
). Jika tidak, pengecualian terjadi. Namun, Anda dapat menghapus pekerjaan di IN_PROGRESS
negara bagian, hanya jika force
parameter disetel ketrue
.
Untuk menghapus pekerjaan, jalankan perintah berikut:
aws iot delete-job --job-id 010 --force|--no-force
Perintah tidak menampilkan output.
Awas
Saat Anda menghapus pekerjaan yang berada dalam IN_PROGRESS
status, 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 dipulihkan ke status yang valid.
Diperlukan beberapa waktu untuk menghapus pekerjaan, tergantung pada jumlah eksekusi pekerjaan yang dibuat untuk pekerjaan itu dan faktor lainnya. Sementara pekerjaan sedang dihapus, DELETION_IN_PROGRESS
muncul sebagai status pekerjaan. Kesalahan terjadi jika Anda mencoba menghapus atau membatalkan pekerjaan dengan status yang sudah adaDELETION_IN_PROGRESS
.
Hanya 10 pekerjaan yang dapat memiliki status sekaligus. DELETION_IN_PROGRESS
Jika tidak, LimitExceededException
terjadi.
Dapatkan dokumen pekerjaan
Untuk mengambil dokumen pekerjaan untuk suatu pekerjaan, gunakan GetJobDocument perintah. 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/amzn-s3-demo-bucket/datafile}\"\n}" }
catatan
Saat Anda menggunakan perintah ini untuk mengambil dokumen pekerjaan, placeholder URLs tidak diganti dengan Amazon S3 yang telah ditetapkan sebelumnya. URLs Saat perangkat memanggil GetPendingJobExecutionsAPIoperasi, placeholder diganti dengan Amazon S3 URLs URLs yang telah ditetapkan sebelumnya dalam dokumen pekerjaan.
Daftar lowongan kerja
Untuk mendapatkan daftar semua pekerjaan di Anda Akun AWS, gunakan ListJobs perintah. Data Job dan data eksekusi pekerjaan disimpan untuk waktu yang terbatas. Jalankan perintah berikut untuk mencantumkan semua pekerjaan di Akun 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, jalankan DescribeJob perintah. Perintah berikut menunjukkan cara mendeskripsikan pekerjaan:
$ aws iot describe-job --job-id 010
Perintah mengembalikan status pekerjaan yang ditentukan. Sebagai contoh:
{ "documentSource": "https://s3.amazonaws.com/amzn-s3-demo-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 } } }
Daftar eksekusi untuk pekerjaan
Pekerjaan yang berjalan pada perangkat tertentu diwakili oleh objek eksekusi pekerjaan. Jalankan ListJobExecutionsForJob perintah untuk membuat daftar semua eksekusi pekerjaan untuk suatu pekerjaan. Berikut ini menunjukkan cara membuat daftar eksekusi untuk suatu 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 } } ] }
Buat daftar eksekusi pekerjaan untuk suatu hal
Jalankan ListJobExecutionsForThing perintah untuk membuat 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
Jalankan DescribeJobExecution perintah untuk mendapatkan status eksekusi pekerjaan. Anda harus menentukan ID pekerjaan dan nama benda dan, secara 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 mengembalikan file JobExecution
. Sebagai contoh:
{ "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
Jalankan DeleteJobExecution perintah untuk menghapus eksekusi pekerjaan. Anda harus menentukan ID pekerjaan, nama benda, 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 harus QUEUED
atau dalam status terminal (SUCCEEDED
,,FAILED
,REJECTED
, TIMED_OUT
REMOVED
, atauCANCELED
). Jika tidak, kesalahan akan muncul. Untuk menghapus eksekusi pekerjaan dengan statusIN_PROGRESS
, Anda dapat mengatur force
parameter ketrue
.
Awas
Saat Anda menghapus eksekusi pekerjaan dengan statusIN_PROGRESS
, perangkat yang menjalankan pekerjaan tidak dapat mengakses informasi pekerjaan atau memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan perangkat dapat pulih ke keadaan yang valid.