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.
Créez et exécutez la tâche dans AWS IoT avec AWS IoT Client de l'appareil
Les procédures décrites dans cette section permettent de créer un document de travail et une ressource de AWS IoT travail. Une fois que vous avez créé la ressource de tâche, AWS IoT envoie le document de travail aux cibles de travail spécifiées sur lesquelles un agent de tâches applique le document de travail au périphérique ou au client.
Procédures décrites dans cette section
Créez et stockez le document de travail pour le travail IoT
Cette procédure crée un document de travail simple à inclure dans une ressource de AWS IoT travail. Ce document job affiche « Hello world ! » sur l'objectif du job.
Pour créer et stocker un document job, procédez comme suit :
-
Sélectionnez le compartiment Amazon S3 dans lequel vous allez enregistrer votre document job. Si vous n'avez pas de compartiment Amazon S3 à utiliser à cette fin, vous aurez besoin d'en créer. Pour plus d'informations sur la création de compartiments Amazon S3, consultez les rubriques Démarrage avec Amazon S3.
Créer et enregistrer le document job pour cette tâche
-
Sur votre ordinateur hôte local, ouvrez un éditeur de texte.
-
Copiez et collez ce texte dans l'éditeur.
{ "operation": "echo", "args": ["Hello world!"] } -
Sur l'ordinateur hôte local, enregistrez le contenu de l'éditeur dans un fichier nommé
hello-world-job.json. Vérifiez que le fichier a été correctement enregistré. Certains éditeurs de texte ajoutent automatiquement
.txtau nom du fichier lorsqu'ils enregistrent un fichier texte. Si votre éditeur a ajouté.txtau nom du fichier, corrigez-le avant de continuer.
-
-
Remplacez le
path_to_filepar le chemin vershello-world-job.json, s'il ne se trouve pas dans votre répertoire actuel, remplacez-le pars3_bucket_namele chemin du compartiment Amazon S3 vers le compartiment que vous avez sélectionné, puis exécutez cette commande pour placer votre document de travail dans le compartiment Amazon S3.aws s3api put-object \ --key hello-world-job.json \ --bodypath_to_file/hello-world-job.json --buckets3_bucket_nameL'URL du document de travail qui identifie le document de travail que vous avez stocké dans Amazon S3 est déterminée en remplaçant le «
s3_bucket_nameet »AWS_regiondans l'URL suivante. Enregistrez l'URL obtenue pour une utilisation ultérieure en tant quejob_document_pathhttps://s3_bucket_name.s3.AWS_Region.amazonaws.com/hello-world-job.jsonNote
AWS la sécurité vous empêche d'ouvrir cette URL en dehors de la vôtre Compte AWS, par exemple à l'aide d'un navigateur. L'URL est utilisée par défaut par le moteur de AWS IoT tâches, qui a accès au fichier. Dans un environnement de production, vous devez vous assurer que vos services AWS IoT sont autorisés à accéder aux documents job stockés dans Amazon S3.
Après avoir enregistré l'URL du document job, passez à Exécuter une tâche dans AWS IoT pour un appareil IoT.
Exécuter une tâche dans AWS IoT pour un appareil IoT
Les procédures décrites dans cette section démarrent le client de l' AWS IoT appareil sur votre Raspberry Pi pour exécuter l'agent de tâches sur l'appareil et attendre que les tâches soient exécutées. Il crée également une ressource de travail dans AWS IoT, qui enverra la tâche à votre appareil IoT et l'exécutera sur celui-ci.
Note
Cette procédure exécute une job sur un seul appareil.
Pour démarrer l'agent de jobs sur votre Raspberry Pi :
-
Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi, exécutez cette commande pour démarrer le AWS IoT Device Client.
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-jobs-config.json -
Dans la fenêtre du terminal, vérifiez que le AWS IoT Device Client affiche ces messages
2021-11-15T18:45:56.708Z [INFO] {Main.cpp}: Jobs is enabled . . . 2021-11-15T18:45:56.708Z [INFO] {Main.cpp}: Client base has been notified that Jobs has started 2021-11-15T18:45:56.708Z [INFO] {JobsFeature.cpp}: Running Jobs! 2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to startNextPendingJobExecution accepted and rejected 2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to nextJobChanged events 2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusAccepted for jobId + 2021-11-15T18:45:56.738Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionAccepted with code {0} 2021-11-15T18:45:56.739Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusRejected for jobId + 2021-11-15T18:45:56.753Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToNextJobChanged with code {0} 2021-11-15T18:45:56.760Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobRejected with code {0} 2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobAccepted with code {0} 2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionRejected with code {0} 2021-11-15T18:45:56.777Z [DEBUG] {JobsFeature.cpp}: Publishing startNextPendingJobExecutionRequest 2021-11-15T18:45:56.785Z [DEBUG] {JobsFeature.cpp}: Ack received for StartNextPendingJobPub with code {0} 2021-11-15T18:45:56.785Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job -
Dans la fenêtre du terminal, après avoir vu ce message, passez à la procédure suivante et créez la ressource job. Notez qu'il ne s'agit peut-être pas de la dernière entrée de la liste.
2021-11-15T18:45:56.785Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
Pour créer un AWS IoT ressource d'emploi
-
Sur votre ordinateur hôte local :
-
Remplacez
job_document_urlpar l'URL du document de travail provenant deCréez et stockez le document de travail pour le travail IoT. -
thing_arnRemplacez-le par l'ARN de la ressource objet que vous avez créée pour votre appareil, puis exécutez cette commande.aws iot create-job \ --job-id hello-world-job-1 \ --document-source "job_document_url" \ --targets "thing_arn" \ --target-selection SNAPSHOTEn cas de succès, la commande renvoie un résultat comme celui-ci.
{ "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1", "jobId": "hello-world-job-1" }
-
-
Dans la fenêtre du terminal, vous devriez voir la sortie du AWS IoT Device Client comme ceci.
2021-11-15T18:02:26.688Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Job ids differ 2021-11-15T18:10:24.890Z [INFO] {JobsFeature.cpp}: Executing job: hello-world-job-1 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status! 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Assuming executable is in PATH 2021-11-15T18:10:24.890Z [INFO] {JobsFeature.cpp}: About to execute: echo Hello world! 2021-11-15T18:10:24.890Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success 2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken 3TEWba9Xj6 in the updateJobExecution promises map 2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process now running 2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process about to call execvp 2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Parent process now running, child PID is 16737 2021-11-15T18:10:24.891Z [DEBUG] {16737}: Hello world! 2021-11-15T18:10:24.891Z [DEBUG] {JobEngine.cpp}: JobEngine finished waiting for child process, returning 0 2021-11-15T18:10:24.891Z [INFO] {JobsFeature.cpp}: Job exited with status: 0 2021-11-15T18:10:24.891Z [INFO] {JobsFeature.cpp}: Job executed successfully! 2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status! 2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details 2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details 2021-11-15T18:10:24.892Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success 2021-11-15T18:10:24.892Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken GmQ0HTzWGg in the updateJobExecution promises map 2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0} 2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken 3TEWba9Xj6 from the updateJobExecution promises map 2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1 2021-11-15T18:10:24.917Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0} 2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken GmQ0HTzWGg from the updateJobExecution promises map 2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1 2021-11-15T18:10:25.861Z [INFO] {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job -
Pendant que le AWS IoT Device Client est en cours d'exécution et attend une tâche, vous pouvez soumettre une autre tâche en modifiant la
job-idvaleur et en l'exécutant de nouveau create-job à partir de l'étape 1.
Lorsque vous avez terminé d'exécuter des tâches, dans la fenêtre du terminal, entrez ^C (Control-C) pour arrêter le AWS IoT Device Client.