Alur kerja pekerjaan - AWS IoT Core

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/thing-name/jobs/notify topik untuk setiap perangkat target.

Pesan tersebut berisi informasi berikut:

{ "timestamp":1476214217017, "jobs":{ "QUEUED":[{ "jobId":"0001", "queuedAt":1476214216981, "lastUpdatedAt":1476214216981, "versionNumber" : 1 }] } }

Perangkat menerima pesan ini tentang '$aws/things/thingName/jobs/notify' topik saat eksekusi pekerjaan diantrian.

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 keIN_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.

statusBidang 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

statusDetailsAtribut 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 }] } }