Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Alur kerja pekerjaan
Berikut ini menunjukkan langkah-langkah yang berbeda dalam alur kerja pekerjaan mulai dari memulai pekerjaan baru hingga melaporkan status penyelesaian pelaksanaan pekerjaan.
Memulai pekerjaan baru
Saat pekerjaan baru dibuat, AWS IoT Jobs menerbitkan pesan tentang $aws/things/
topik untuk setiap perangkat target.thing-name
/jobs/notify
Pesan tersebut berisi informasi berikut:
{ "timestamp":1476214217017, "jobs":{ "QUEUED":[{ "jobId":"0001", "queuedAt":1476214216981, "lastUpdatedAt":1476214216981, "versionNumber" : 1 }] } }
Perangkat menerima pesan ini tentang '$aws/things/
topik saat eksekusi pekerjaan diantrian.thingName
/jobs/notify'
catatan
Untuk pekerjaan dengan opsionalSchedulingConfig
, pekerjaan akan mempertahankan status status awalSCHEDULED
. Ketika pekerjaan mencapai yang dipilihstartTime
, hal berikut akan terjadi:
-
Status status pekerjaan akan diperbarui ke
IN_PROGRESS
. -
Pekerjaan akan memulai peluncuran dokumen pekerjaan ke semua perangkat dalam kelompok sasaran.
Dapatkan informasi pekerjaan
Untuk mendapatkan informasi selengkapnya tentang eksekusi pekerjaan, perangkat memanggil API DescribeJobExecution MQTT dengan includeJobDocument
bidang yang disetel ke true
(default).
Jika permintaan berhasil, layanan AWS IoT Jobs menerbitkan pesan tentang $aws/things/MyThing/jobs/0023/get/accepted
topik:
{ "clientToken" : "client-001", "timestamp" : 1489097434407, "execution" : { "approximateSecondsBeforeTimedOut": number, "jobId" : "023", "status" : "QUEUED", "queuedAt" : 1489097374841, "lastUpdatedAt" : 1489097374841, "versionNumber" : 1, "jobDocument" : { < contents of job document > } } }
Jika permintaan gagal, layanan AWS IoT Jobs akan menerbitkan pesan tentang $aws/things/MyThing/jobs/0023/get/rejected
topik tersebut.
Perangkat sekarang memiliki dokumen pekerjaan yang dapat digunakan untuk melakukan operasi jarak jauh untuk pekerjaan itu. Jika dokumen pekerjaan berisi URL presigned Amazon S3, perangkat dapat menggunakan URL tersebut untuk mengunduh file apa pun yang diperlukan untuk pekerjaan tersebut.
Laporkan status eksekusi pekerjaan
Saat perangkat menjalankan pekerjaan, perangkat dapat memanggil UpdateJobExecution MQTT API untuk memperbarui status eksekusi pekerjaan.
Misalnya, perangkat dapat memperbarui status eksekusi pekerjaan IN_PROGRESS
dengan menerbitkan pesan berikut tentang $aws/things/MyThing/jobs/0023/update
topik:
{ "status":"IN_PROGRESS", "statusDetails": { "progress":"50%" }, "expectedVersion":"1", "clientToken":"client001" }
Pekerjaan merespons dengan menerbitkan pesan ke $aws/things/MyThing/jobs/0023/update/accepted
atau $aws/things/MyThing/jobs/0023/update/rejected
topik:
{ "clientToken":"client001", "timestamp":1476289222841 }
Perangkat dapat menggabungkan dua permintaan sebelumnya dengan meneleponStartNextPendingJobExecution. Itu mendapatkan dan memulai eksekusi pekerjaan tertunda berikutnya dan memungkinkan perangkat untuk memperbarui status eksekusi pekerjaan. Permintaan ini juga mengembalikan dokumen pekerjaan ketika ada eksekusi pekerjaan yang tertunda.
Jika pekerjaan berisi a TimeoutConfig, pengatur waktu yang sedang berlangsung mulai berjalan. Anda juga dapat mengatur pengatur waktu langkah untuk eksekusi pekerjaan dengan menetapkan nilai stepTimeoutInMinutes
saat Anda menelepon UpdateJobExecution. Pengatur waktu langkah hanya berlaku untuk eksekusi pekerjaan yang Anda perbarui. Anda dapat menetapkan nilai baru untuk timer ini setiap kali Anda memperbarui eksekusi pekerjaan. Anda juga dapat membuat pengatur waktu langkah saat menelepon StartNextPendingJobExecution. Jika eksekusi pekerjaan tetap dalam IN_PROGRESS
status lebih lama dari interval pengatur waktu langkah, itu gagal dan beralih ke TIMED_OUT
status terminal. Pengatur waktu langkah tidak berpengaruh pada pengatur waktu yang sedang berlangsung yang Anda atur saat membuat pekerjaan.
status
Bidang dapat diatur keIN_PROGRESS
,SUCCEEDED
, atauFAILED
. Anda tidak dapat memperbarui status eksekusi pekerjaan yang sudah dalam status terminal.
Eksekusi laporan selesai
Ketika perangkat selesai menjalankan pekerjaan, ia memanggil UpdateJobExecution MQTT API. Jika pekerjaan berhasil, atur status
ke SUCCEEDED
dan, di payload pesanstatusDetails
, tambahkan informasi lain tentang pekerjaan sebagai pasangan nama-nilai. Pengatur waktu dalam proses dan langkah berakhir ketika eksekusi pekerjaan selesai.
Sebagai contoh:
{ "status":"SUCCEEDED", "statusDetails": { "progress":"100%" }, "expectedVersion":"2", "clientToken":"client-001" }
Jika pekerjaan tidak berhasil, atur status
ke FAILED
dan, distatusDetails
, tambahkan informasi tentang kesalahan yang terjadi:
{ "status":"FAILED", "statusDetails": { "errorCode":"101", "errorMsg":"Unable to install update" }, "expectedVersion":"2", "clientToken":"client-001" }
catatan
statusDetails
Atribut dapat berisi sejumlah pasangan nama-nilai.
Ketika layanan AWS IoT Jobs menerima pembaruan ini, ia menerbitkan pesan tentang $aws/things/MyThing/jobs/notify
topik tersebut untuk menunjukkan bahwa pelaksanaan pekerjaan telah selesai:
{ "timestamp":1476290692776, "jobs":{} }
Pekerjaan tambahan
Jika ada eksekusi pekerjaan lain yang tertunda untuk perangkat, mereka disertakan dalam pesan yang dipublikasikan ke$aws/things/MyThing/jobs/notify
.
Sebagai contoh:
{ "timestamp":1476290692776, "jobs":{ "QUEUED":[{ "jobId":"0002", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }], "IN_PROGRESS":[{ "jobId":"0003", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }] } }