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.
Opérations de l'API MQTT de l'appareil de tâches
Vous pouvez émettre des commandes de tâches sur l'appareil en publiant des messages MQTT surRubriques réservées utilisées pour les commandes Jobs.
Votre client côté appareil doit être abonné aux rubriques des messages de réponse de ces commandes. Si vous utilisez leAWS IoTDevice Client, votre appareil s'abonnera automatiquement aux rubriques de réponse. Cela signifie que le gestionnaire de messages publiera les sujets des messages de réponse à l'attention du client qui a publié le message de commande, que votre client soit abonné ou non aux sujets du message de réponse. Ces messages de réponse ne passent pas par l'intermédiaire du courtier de messages et ne peuvent pas être souscrits par d'autres clients ou règles.
Lorsque vous vous inscrivez à l'offre d'emploi etjobExecution
sujets relatifs aux événements pour votre solution de surveillance de flotte, commencez par activertâches et événements d'exécution des tâchespour recevoir tous les événements du côté cloud. Messages de progression des tâches qui sont traités par le biais du courtier de messages et peuvent être utilisés parAWS IoTles règles sont publiées sous la formeÉvénements Jobs. Étant donné que le courtier de messages publie des messages de réponse, même sans y être abonné explicitement, votre client doit être configuré pour recevoir et identifier les messages qu'il reçoit. Votre client doit également confirmer queNom de l'objet
dans la rubrique du message entrant s'applique au nom de l'objet du client avant que celui-ci ne donne suite au message.
Note
Des messages quiAWS IoTenvoie en réponse aux messages de commande de l'API MQTT Jobs sont débités de votre compte, que vous y soyez abonné de manière explicite ou non.
Ce qui suit montre les opérations de l'API MQTT et leur syntaxe de demande et de réponse. Toutes les opérations de l'API MQTT possèdent les paramètres suivants :
- clientToken
-
Un jeton client facultatif utilisé pour corréler les demandes et les réponses. Entrez une valeur arbitraire ici et elle sera reflétée dans la réponse.
timestamp
-
Temps écoulé, en secondes, depuis l'époque à laquelle le message a été envoyé.
Obtient la liste de toutes les tâches qui ne sont pas dans un état terminal, pour un objet spécifié.
Pour appeler cette API, publiez un message sur $aws/things/
.thingName
/jobs/get
Charge utile de la demande :
{ "clientToken": "string" }
Le courtier de messages publiera$aws/things/
etthingName
/jobs/get/accepted$aws/things/
même sans y être abonné spécifiquement. Toutefois, pour que votre client reçoive les messages, il doit les écouter. Pour plus d'informations, voirla note concernant les messages de l'API Jobs.thingName
/jobs/get/rejected
Charge utile de la réponse :
{ "inProgressJobs" : [ JobExecutionSummary ... ], "queuedJobs" : [ JobExecutionSummary ... ], "timestamp" : 1489096425069, "clientToken" : "client-001" }
OùinProgressJobs
etqueuedJobs
renvoie une liste deJobExecutionSummaryobjets ayant le statut deIN_PROGRESS
ouQUEUED
.
Récupère et démarre la prochaine exécution de tâche en attente pour un objet (état)IN_PROGRESS
ouQUEUED
).
-
Toutes les exécutions de tâches avec statut
IN_PROGRESS
sont renvoyés en premier. -
Les exécutions de tâches sont renvoyées dans l'ordre dans lequel elles ont été mises en file d'attente. Lorsqu'un élément est ajouté ou supprimé du groupe cible pour votre tâche, confirmez l'ordre de déploiement de toutes les nouvelles exécutions de tâches par rapport aux exécutions de tâches existantes.
-
Si la prochaine exécution de tâche en attente est
QUEUED
, son état passe àIN_PROGRESS
et les détails de l'état d'exécution de la tâche sont définis comme spécifié. -
Si la prochaine exécution de la tâche en attente est déjà
IN_PROGRESS
, les détails de son statut ne sont pas modifiés. -
Si aucune exécution de tâche n'est en attente, la réponse n'inclut pas
execution
terrain. -
Vous pouvez éventuellement créer un chronomètre en définissant une valeur pour
stepTimeoutInMinutes
propriété. Si vous ne mettez pas à jour la valeur de cette propriété en exécutantUpdateJobExecution
, l'exécution de la tâche expire lorsque le minuteur d'étape expire.
Pour appeler cette API, publiez un message sur $aws/things/
.thingName
/jobs/start-next
Charge utile de la demande :
{ "statusDetails": { "string": "
job-execution-state
" ... }, "stepTimeoutInMinutes": long, "clientToken": "string" }
statusDetails
-
Ensemble de paires nom-valeur décrivant le statut de l'exécution de la tâche. Si aucune valeur n'est spécifiée, les informations
statusDetails
demeurent inchangées. stepTimeOutInMinutes
-
Spécifie la durée pendant laquelle cet appareil doit terminer l'exécution de la tâche. Si l'état d'exécution de la tâche n'est pas réglé sur un état terminal avant l'expiration de ce temporisateur ou avant que le temporisateur ne soit réinitialisé, (en appelant
UpdateJobExecution
, en réglant le statut surIN_PROGRESS
et en spécifiant une nouvelle valeur de délai d'expiration dans le champstepTimeoutInMinutes
) le statut d'exécution de la tâche est défini surTIMED_OUT
. La définition du délai d'expiration n'a aucun effet sur le délai d'exécution de la tâche qui peut avoir été spécifié lorsque la tâche a été créée (CreateJob
à l'aide du champtimeoutConfig
).
Le courtier de messages publiera$aws/things/
etthingName
/jobs/start-next/accepted$aws/things/
même sans y être abonné spécifiquement. Toutefois, pour que votre client reçoive les messages, il doit les écouter. Pour plus d'informations, voirla note concernant les messages de l'API Jobs.thingName
/jobs/start-next/rejected
Charge utile de la réponse :
{ "execution" : JobExecutionData, "timestamp" : timestamp, "clientToken" : "string" }
Oùexecution
est unJobExecutionobjet. Par exemple :
{ "execution" : { "jobId" : "022", "thingName" : "MyThing", "jobDocument" : "< contents of job document >", "status" : "IN_PROGRESS", "queuedAt" : 1489096123309, "lastUpdatedAt" : 1489096123309, "versionNumber" : 1, "executionNumber" : 1234567890 }, "clientToken" : "client-1", "timestamp" : 1489088524284, }
Permet d'obtenir des informations détaillées sur une exécution de tâche.
Vous pouvez définir lejobId
pour$next
pour renvoyer la prochaine exécution de tâche en attente pour un objet (avec un statut deIN_PROGRESS
ouQUEUED
).
Pour appeler cette API, publiez un message sur $aws/things/
. thingName
/jobs/jobId
/get
Charge utile de la demande :
{ "jobId" : "022", "thingName" : "MyThing", "executionNumber": long, "includeJobDocument": boolean, "clientToken": "string" }
thingName
-
Nom de l'objet associé à l'appareil.
jobId
-
Identifiant unique attribué à cette tâche lors de sa création.
Ou utilisez
$next
pour renvoyer la prochaine exécution de tâche en attente pour un objet (avec un statut deIN_PROGRESS
ouQUEUED
). Dans ce cas, toutes les exécutions de tâches avec statutIN_PROGRESS
sont renvoyés en premier. Les exécutions de tâche sont renvoyées dans l'ordre selon lequel elles ont été créées. executionNumber
-
(Facultatif) Numéro identifiant l'exécution d'une tâche sur un appareil. S'il n'est pas indiqué, la dernière exécution de tâche est renvoyée.
includeJobDocument
-
(Facultatif) À moins qu'il ne soit réglé sur
false
, la réponse contient le document de travail. La valeur par défaut esttrue
.
Le courtier de messages publiera$aws/things/
etthingName
/jobs/jobId
/get/accepted$aws/things/
même sans y être abonné spécifiquement. Toutefois, pour que votre client reçoive les messages, il doit les écouter. Pour plus d'informations, voirla note concernant les messages de l'API Jobs.thingName
/jobs/jobId
/get/rejected
Charge utile de la réponse :
{ "execution" : JobExecutionData, "timestamp": "timestamp", "clientToken": "string" }
Oùexecution
est unJobExecutionobjet.
Met à jour le statut d'une exécution de tâche. Le cas échéant, vous pouvez créer un minuteur d'étape en définissant une valeur pour la propriété stepTimeoutInMinutes
. Si vous ne mettez pas à jour la valeur de cette propriété en exécutant à nouveau UpdateJobExecution
, l'exécution de la tâche expire lorsque le minuteur d'étape expire.
Pour appeler cette API, publiez un message sur $aws/things/
. thingName
/jobs/jobId
/update
Charge utile de la demande :
{ "status": "
job-execution-state
", "statusDetails": { "string": "string" ... }, "expectedVersion": "number", "executionNumber": long, "includeJobExecutionState": boolean, "includeJobDocument": boolean, "stepTimeoutInMinutes": long, "clientToken": "string" }
status
-
Le nouveau statut de l'exécution de la tâche (
IN_PROGRESS
,FAILED
,SUCCEEDED
, ouREJECTED
). Il doit être spécifié à chaque mise à jour. statusDetails
-
Ensemble de paires nom-valeur décrivant le statut de l'exécution de la tâche. Si aucune valeur n'est spécifiée, les informations
statusDetails
demeurent inchangées. expectedVersion
-
Version actuelle attendue de l'exécution de tâche. Sa version est incrémentée à chaque mise à jour de l'exécution de tâche. Si la version de l'exécution de la tâche est enregistrée dansAWS IoTLe service Jobs ne correspond pas, la mise à jour est rejetée avec un
VersionMismatch
erreur. UnErrorResponsequi contient les données d'état d'exécution de la tâche en cours est également renvoyée. (Il est donc inutile d'effectuer une demandeDescribeJobExecution
distincte pour obtenir les données du statut d'exécution de tâche.) executionNumber
-
(Facultatif) Numéro identifiant l'exécution d'une tâche sur un appareil. S'il n'est pas indiqué, la dernière exécution de tâche est utilisée.
includeJobExecutionState
-
(Facultatif) Lorsqu'il est inclus et réglé sur
true
, la réponse contient leJobExecutionState
terrain. La valeur par défaut estfalse
. includeJobDocument
-
(Facultatif) Lorsqu'il est inclus et réglé sur
true
, la réponse contient leJobDocument
. La valeur par défaut estfalse
. stepTimeoutInMinutes
-
Spécifie la durée pendant laquelle cet appareil doit terminer l'exécution de la tâche. Si l'état d'exécution de la tâche n'est pas défini sur un état terminal avant l'expiration de ce temporisateur ou avant que le temporisateur ne soit réinitialisé, l'état d'exécution de la tâche est défini sur
TIMED_OUT
. La définition ou la réinitialisation de ce délai n'a aucun effet sur le délai d'exécution de la tâche qui aurait pu être spécifié lors de la création de la tâche.
Le courtier de messages publiera$aws/things/
etthingName
/jobs/jobId
/update/accepted$aws/things/
même sans y être abonné spécifiquement. Toutefois, pour que votre client reçoive les messages, il doit les écouter. Pour plus d'informations, voirla note concernant les messages de l'API Jobs.thingName
/jobs/jobId
/update/rejected
Charge utile de la réponse :
{ "executionState": JobExecutionState, "jobDocument": "string", "timestamp": timestamp, "clientToken": "string" }
executionState
-
Un objet JobExecutionState.
jobDocument
-
Objet de document de tâche.
timestamp
-
Temps écoulé, en secondes, depuis l'époque à laquelle le message a été envoyé.
clientToken
-
Jeton client utilisé pour établir une corrélation entre les demandes et les réponses.
Lorsque vous utilisez le protocole MQTT, vous pouvez également effectuer les mises à jour suivantes :
Envoyé chaque fois qu'une exécution de tâche est ajoutée à la liste des exécutions de tâche en attente pour un objet, ou en est supprimée.
Utilisez la rubrique :
$aws/things/
thingName
/jobs/notify
Charge utile du message :
{ "jobs" : { "JobExecutionState": [
JobExecutionSummary
... ] }, "timestamp": timestamp }
Envoyé chaque fois que l'exécution d'une tâche est modifiée sur la liste des exécutions de tâches en attente pour un objet, comme défini pourDescribeJobExecution
avecjobId
$next
. Ce message n'est pas envoyé lorsque les détails d'exécution de la tâche suivante changent, mais uniquement lorsque la tâche suivante qui serait renvoyée parDescribeJobExecution
avecjobId
$next
a changé. Considérons les exécutions de tâches J1 et J2 avec un statut deQUEUED
. J1 est l'exécution suivante sur la liste des exécutions de tâche en attente. Si le statut de J2 est modifié enIN_PROGRESS
tant que l'état de J1 reste inchangé, cette notification est envoyée et contient les détails de J2.
Utilisez la rubrique :
$aws/things/
thingName
/jobs/notify-next
Charge utile du message :
{ "execution" :
JobExecution
, "timestamp": timestamp, }