Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Arbeitsablauf für Aufträge
Im Folgenden werden die verschiedenen Schritte des Auftragsworkflows vom Starten eines neuen Auftrags bis hin zur Meldung des Abschlussstatus einer Auftragsausführung dargestellt.
Starten Sie einen neuen Auftrag
Wenn ein neuer Auftrag erstellt wird, veröffentlicht AWS IoT Jobs eine Nachricht zum $aws/things/
Thema für jedes Zielgerät.thing-name
/jobs/notify
Die Nachricht enthält die folgenden Informationen:
{ "timestamp":1476214217017, "jobs":{ "QUEUED":[{ "jobId":"0001", "queuedAt":1476214216981, "lastUpdatedAt":1476214216981, "versionNumber" : 1 }] } }
Das Gerät erhält diese Nachricht auf dem '$aws/things/
-Thema, wenn die Auftragsausführung in die Warteschlange gesetzt wird.thingName
/jobs/notify'
Anmerkung
Bei Aufträgen mit dem optionalen SchedulingConfig
behält der Auftrag den ursprünglichen SCHEDULED
-Status bei. Wenn der Auftrag den ausgewählten startTime
erreicht, passiert Folgendes:
-
Der Status des Auftragsstatus wird auf
IN_PROGRESS
aktualisiert. -
Der Auftrag beginnt mit dem Rollout des Auftragsdokuments auf alle Geräte der Zielgruppe.
Auftragsinformationen abrufen
Um weitere Informationen zu einer Auftragsausführung abzurufen, ruft das Gerät die DescribeJobExecution-MQTT-API mit dem Wert true
in dem Feld includeJobDocument
ab (Standard).
Wenn die Anforderung erfolgreich ist, veröffentlicht der AWS IoT Jobs-Service eine Nachricht zum $aws/things/MyThing/jobs/0023/get/accepted
Thema:
{ "clientToken" : "client-001", "timestamp" : 1489097434407, "execution" : { "approximateSecondsBeforeTimedOut": number, "jobId" : "023", "status" : "QUEUED", "queuedAt" : 1489097374841, "lastUpdatedAt" : 1489097374841, "versionNumber" : 1, "jobDocument" : { < contents of job document > } } }
Wenn die Anforderung fehlschlägt, veröffentlicht der AWS IoT Jobs-Service eine Nachricht zum $aws/things/MyThing/jobs/0023/get/rejected
Thema.
Das Gerät verfügt jetzt über das Auftragsdokument, das es verwenden kann, um die Remoteoperationen für den Auftrag durchzuführen. Wenn das Auftragsdokument eine vorsignierte Amazon S3-URL enthält, kann das Gerät diese URL zum Download aller für den Auftrag erforderlicher Dateien verwenden.
Melden des Status der Auftragsausführung
Wenn das Gerät den Auftrag ausführt, kann es die UpdateJobExecution-MQTT-API aufrufen, um den Status der Auftragsausführung zu aktualisieren.
Beispielsweise kann ein Gerät den Status der Auftragsausführung zu IN_PROGRESS
aktualisieren, indem es die folgende Nachricht auf dem Thema $aws/things/MyThing/jobs/0023/update
veröffentlicht:
{ "status":"IN_PROGRESS", "statusDetails": { "progress":"50%" }, "expectedVersion":"1", "clientToken":"client001" }
Jobs reagiert mit der Veröffentlichung einer Nachricht auf das Thema $aws/things/MyThing/jobs/0023/update/accepted
oder $aws/things/MyThing/jobs/0023/update/rejected
:
{ "clientToken":"client001", "timestamp":1476289222841 }
Das Gerät kann die beiden vorherigen Anforderungen durch den Aufruf von StartNextPendingJobExecution kombinieren. Dadurch wird die nächste ausstehende Auftragsausführung abgerufen und gestartet, und das Gerät kann den Auftragsausführungsstatus aktualisieren. Diese Anforderung gibt auch das Auftragsdokument aus, wenn eine Auftragsausführung aussteht.
Wenn der Auftrag eine enthältTimeoutConfig, wird der Timer in Bearbeitung ausgeführt. Sie können auch einen Schritt-Timer für eine Auftragsausführung festlegen, indem Sie einen Wert für festlegenstepTimeoutInMinutes
, wenn Sie aufrufenUpdateJobExecution. Der Schritt Timer gilt nur für die Auftragsausführung, die Sie aktualisieren. Sie können einen neuen Wert für diesen Timer bei jeder Aktualisierung einer Auftragsausführung einrichten. Sie können auch einen Schritt-Timer erstellen, wenn Sie aufrufenStartNextPendingJobExecution. Falls die Auftragsausführung länger als das Schritt-Timer-Intervall im Status IN_PROGRESS
bleibt, schlägt sie fehl und wechselt in den terminalen Status TIMED_OUT
. Der Schritt-Timer hat keine Auswirkungen auf den Timer „In Bearbeitung“, den Sie beim Erstellen eines Auftrags festlegen.
Das Feld status
kann auf IN_PROGRESS
, SUCCEEDED
oder FAILED
gesetzt werden. Der Status einer bereits im Status „Terminal“ befindlichen Auftragsausführung kann nicht aktualisiert werden.
Meldung des Abschlusses der Ausführung
Wenn das Gerät die Ausführung des Auftrags abgeschlossen hat, ruft es die UpdateJobExecution-MQTT-API ab. Wenn der Auftrag erfolgreich war, setzen Sie status
auf SUCCEEDED
, und fügen Sie in statusDetails
in der Nachrichtnutzlast weitere Informationen zu dem Auftrag als Name/Wert-Paare hinzu. Die Timer „In Bearbeitung“ und „Schritt“ enden, wenn die Auftragsausführung abgeschlossen ist.
Beispielsweise:
{ "status":"SUCCEEDED", "statusDetails": { "progress":"100%" }, "expectedVersion":"2", "clientToken":"client-001" }
Wenn der Auftrag nicht erfolgreich war, setzen Sie status
auf FAILED
, und fügen Sie in statusDetails
Informationen zu dem aufgetretenen Fehler hinzu:
{ "status":"FAILED", "statusDetails": { "errorCode":"101", "errorMsg":"Unable to install update" }, "expectedVersion":"2", "clientToken":"client-001" }
Anmerkung
Das Attribut statusDetails
kann eine beliebige Zahl von Name/Wert-Paaren enthalten.
Wenn der AWS IoT Jobs-Service diese Aktualisierung erhält, veröffentlicht er eine Nachricht zum $aws/things/MyThing/jobs/notify
Thema, um anzuzeigen, dass die Auftragsausführung abgeschlossen ist:
{ "timestamp":1476290692776, "jobs":{} }
Zusätzliche Aufträge
Wenn für das Gerät weitere Auftragsausführungen ausstehen, sind diese in der Nachricht enthalten, die für $aws/things/MyThing/jobs/notify
veröffentlicht wurde.
Beispielsweise:
{ "timestamp":1476290692776, "jobs":{ "QUEUED":[{ "jobId":"0002", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }], "IN_PROGRESS":[{ "jobId":"0003", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }] } }