Notifications Jobs - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Notifications Jobs

Le service AWS IoT Jobs publie des messages MQTT sur des sujets réservés lorsque des tâches sont en attente ou lorsque la première exécution de tâche de la liste change. Les appareils peuvent suivre les tâches en attente en s’abonnant à ces rubriques.

Type de notification de tâche.

Les notifications de tâche sont publiées dans les rubriques MQTT en tant que charges utilises JSON. Il existe deux types de notifications :

ListNotification

Une ListNotification contient la liste de 15 exécutions de tâche en attente au plus. Elles sont triées par statut (les exécutions de tâche IN_PROGRESS précèdent les exécutions de tâche QUEUED), puis selon le moment auquel elles ont été mises en file d'attente.

Une ListNotification est publiée chaque fois que l'une des conditions ci-dessous est remplie.

  • Une nouvelle exécution de tâche est mise en file d'attente ou passe à un statut qui n'est pas final (IN_PROGRESS ou QUEUED).

  • Une ancienne exécution d'état acquiert le statut final (FAILED, SUCCEEDED, CANCELED, TIMED_OUT, REJECTED ou REMOVED).

Notification de liste (jusqu’à 15 exécutions de tâches en attente dans QUEUED ouIN_PROGRESS)

Sans configuration de planification optionnelle ni fenêtre de maintenance récurrente

(Jusqu’à 10 exécutions de tâches)

Avec configuration de planification optionnelle et fenêtre de maintenance récurrente

(Jusqu’à 5 exécutions de tâches)

Apparaît toujours dans le ListNotification.

N'apparaît que ListNotification pendant une fenêtre de maintenance.

NextNotification

  • Une NextNotification contient le résumé d’informations de l’exécution de tâche suivante dans la file d’attente.

    Une NextNotification est publiée chaque fois que la première exécution de tâche de la liste change.

    • Une nouvelle exécution de tâche est ajoutée à la liste au statut QUEUED et constitue le premier élément de la liste.

    • Le statut d’une exécution de tâche existante qui n’était pas le premier élément de la liste passe de QUEUED à IN_PROGRESS et devient le premier élément de la liste. (Cette situation se produit lorsque la liste ne contient aucune autre exécution de tâche IN_PROGRESS ou que l'exécution de tâche dont le statut passe de QUEUED à IN_PROGRESS a été mise en file d'attente avant toutes les exécutions de tâche IN_PROGRESS de la liste.)

    • Le statut de l'exécution de tâche qui est la première de la liste passe au statut final et est supprimée de la liste.

Pour plus d'informations sur la publication et l'abonnement aux rubriques MQTT, consultez Protocoles de communication des appareils.

Note

Les notifications ne sont pas disponibles lorsque vous utilisez HTTP Signature Version 4 ou HTTP TLS pour communiquer avec les tâches.

Tâche en attente

Le service AWS IoT Jobs publie un message sur un sujet MQTT lorsqu'une tâche est ajoutée ou supprimée de la liste des tâches en attente pour un objet ou lorsque la première exécution de tâche de la liste change :

  • $aws/things/thingName/jobs/notify

  • $aws/things/thingName/jobs/notify-next

Les messages contiennent les exemples de charge utile suivants :

$aws/things/thingName/jobs/notify:

{ "timestamp" : 10011, "jobs" : { "IN_PROGRESS" : [ { "jobId" : "other-job", "queuedAt" : 10003, "lastUpdatedAt" : 10009, "executionNumber" : 1, "versionNumber" : 1 } ], "QUEUED" : [ { "jobId" : "this-job", "queuedAt" : 10011, "lastUpdatedAt" : 10011, "executionNumber" : 1, "versionNumber" : 0 } ] } }

Si l’exécution de la tâche appelée this-job provient d’une tâche pour laquelle la configuration de planification facultative est sélectionnée et que le déploiement du document de tâche est prévu pour avoir lieu pendant une fenêtre de maintenance, il n’apparaîtra que pendant une fenêtre de maintenance récurrente. En dehors d’une fenêtre de maintenance, la tâche appelée this-job sera exclue de la liste des exécutions de tâches en attente, comme indiqué dans l’exemple suivant.

{ "timestamp" : 10011, "jobs" : { "IN_PROGRESS" : [ { "jobId" : "other-job", "queuedAt" : 10003, "lastUpdatedAt" : 10009, "executionNumber" : 1, "versionNumber" : 1 } ], "QUEUED" : [] } }

$aws/things/thingName/jobs/notify-next:

{ "timestamp" : 10011, "execution" : { "jobId" : "other-job", "status" : "IN_PROGRESS", "queuedAt" : 10009, "lastUpdatedAt" : 10009, "versionNumber" : 1, "executionNumber" : 1, "jobDocument" : {"c":"d"} } }

Si l’exécution de la tâche appelée other-job provient d’une tâche pour laquelle la configuration de planification facultative est sélectionnée et que le déploiement du document de tâche est prévu pour avoir lieu pendant une fenêtre de maintenance, il n’apparaîtra que pendant une fenêtre de maintenance récurrente. En dehors d’une fenêtre de maintenance, la tâche appelée other-job ne sera pas répertoriée comme la prochaine exécution de la tâche, comme indiqué dans l’exemple suivant.

{} //No other pending jobs
{ "timestamp" : 10011, "execution" : { "jobId" : "this-job", "queuedAt" : 10011, "lastUpdatedAt" : 10011, "executionNumber" : 1, "versionNumber" : 0, "jobDocument" : {"a":"b"} } } // "this-job" is pending next to "other-job"

Les valeurs possibles d'état d'exécution de tâche sont QUEUED, IN_PROGRESS, FAILED, SUCCEEDED, CANCELED, TIMED_OUT, REJECTED et REMOVED.

La série d’exemples suivante montre les notifications publiées pour chaque rubrique lorsque des exécutions de tâches sont créées et passent d’un état à un autre.

D'abord, une tâche appelée job1 est créée. Cette notification est publiée dans la rubrique jobs/notify :

{ "timestamp": 1517016948, "jobs": { "QUEUED": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "executionNumber": 1, "versionNumber": 1 } ] } }

Cette notification est publiée dans la rubrique jobs/notify-next :

{ "timestamp": 1517016948, "execution": { "jobId": "job1", "status": "QUEUED", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "versionNumber": 1, "executionNumber": 1, "jobDocument": { "operation": "test" } } }

Lorsqu'une autre tâche (job2) est créée, cette notification est publiée dans la rubrique jobs/notify :

{ "timestamp": 1517017192, "jobs": { "QUEUED": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 } ] } }

Aucune notification n'est pas publiée dans la rubrique jobs/notify-next, car la tâche suivante de la file d'attente (job1) n'a pas changé. Lorsque job1 commence à s'exécuter, son statut devient IN_PROGRESS. Aucune notification n'est publiée, car la liste des tâches et la tâche suivante dans la file d'attente n'ont pas changé.

Lorsqu'une troisième tâche (job3) est ajoutée, cette notification est publiée dans la rubrique jobs/notify :

{ "timestamp": 1517017906, "jobs": { "IN_PROGRESS": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517017472, "startedAt": 1517017472, "executionNumber": 1, "versionNumber": 2 } ], "QUEUED": [ { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517017905, "executionNumber": 1, "versionNumber": 1 } ] } }

Aucune notification n'est publiée dans la rubrique jobs/notify-next, car la tâche suivante de la file d'attente est toujours job1.

Une fois la tâche job1 terminée, son statut passe à SUCCEEDED et cette notification est publiée dans la rubrique jobs/notify :

{ "timestamp": 1517186269, "jobs": { "QUEUED": [ { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517017905, "executionNumber": 1, "versionNumber": 1 } ] } }

À ce stade, la tâche job1 a été supprimée de la file d'attente et la prochaine tâche à s'exécuter est job2. Cette notification est publiée dans la rubrique jobs/notify-next :

{ "timestamp": 1517186269, "execution": { "jobId": "job2", "status": "QUEUED", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "versionNumber": 1, "executionNumber": 1, "jobDocument": { "operation": "test" } } }

Si la tâche job3 doit commencer à s'exécuter avant la tâche job2 (ce qui n'est pas recommandé), le statut de la tâche job3 peut être modifié pour devenir IN_PROGRESS. Dans cette éventualité, job2 n'est plus la tâche suivante dans la file d'attente et cette notification est publiée dans la rubrique jobs/notify-next :

{ "timestamp": 1517186779, "execution": { "jobId": "job3", "status": "IN_PROGRESS", "queuedAt": 1517017905, "startedAt": 1517186779, "lastUpdatedAt": 1517186779, "versionNumber": 2, "executionNumber": 1, "jobDocument": { "operation": "test" } } }

Aucune notification n'est publiée dans la rubrique jobs/notify, car aucune tâche n'a été ajoutée ou supprimée.

Si l'appareil rejette la tâche job2 et met à jour son statut sur REJECTED, cette notification est publiée dans la rubrique jobs/notify :

{ "timestamp": 1517189392, "jobs": { "IN_PROGRESS": [ { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517186779, "startedAt": 1517186779, "executionNumber": 1, "versionNumber": 2 } ] } }

Si la tâche job3 (toujours en cours) est supprimée de force, cette notification est publiée dans la rubrique jobs/notify :

{ "timestamp": 1517189551, "jobs": {} }

À ce stade, la file d'attente est vide. Cette notification est publiée dans la rubrique jobs/notify-next :

{ "timestamp": 1517189551 }