Comment puis-je ajouter des tâches périodiques au niveau de travail de mon environnement Elastic Beanstalk et résoudre les problèmes liés aux tâches périodiques qui ne seront pas ajoutées ?

Dernière mise à jour : 24/06/2022

Je souhaite ajouter des tâches périodiques au niveau de travail de mon environnement AWS Elastic Beanstalk.

Solution

Ajouter des tâches périodiques à un niveau de travail

Pour ajouter une tâche périodique au niveau de travail de votre environnement Elastic Beanstalk, ajoutez un fichier cron.yaml à la racine de votre code source. Par exemple :

version: 1
cron:
 - name: "schedule"
   url: "/schedule"
   schedule: "0 */12 * * *"

Remarque : Dans l'exemple précédent, la tâche périodique planifiée envoie un message Amazon Simple Queue Service (Amazon SQS) décrivant la tâche au début de la file d'attente toutes les 12 heures. Une fois que le message a traversé la file d'attente, la tâche est récupérée par une instance pour HTTP POST le point de terminaison «/schedule ».

Si vos tâches périodiques n'apparaissent toujours pas dans le niveau de travail, suivez les étapes de la section Résolution de problèmes liés aux tâches périodiques .

Résoudre les problèmes liés aux tâches périodiques

1.    Dans le flux d'événements de votre environnement Elastic Beanstalk, recherchez un événement semblable à celui-ci :

Successfully loaded 1 scheduled tasks from cron.yaml

2.    Dans votre fichier /var/log/eb-commandprocessor.log recherchez un journal semblable à celui-ci :

{"status":"SUCCESS","api_version":"1.0","results":[{"status":"SUCCESS","msg":"","returncode":0,"events":[{"msg":"Successfully loaded 1 scheduled tasks from cron.yaml.","severity":"INFO","timestamp":1562000593}]}]}

3.    Dans votre fichier /var/log/aws-sqsd/default.log vérifiez que le démon d'Amazon Simple Queue Service (Amazon SQS) est en cours d'exécution et interroge la bonne file d'attente.

Si le démon d'Amazon SQS démarre correctement, vous devriez voir des journaux semblables à celui-ci :

2019-07-04T14:11:21Z init: initializing aws-sqsd 2.4 (2018-09-06)
2019-07-04T14:11:21Z pollers: start initializting poller timer...
2019-07-04T14:11:21Z pollers: start auto running poller...
2019-07-04T14:11:21Z start: polling https://sqs.us-west-2.amazonaws.com/111122223333/yourWorkerQueue

4.    Dans votre fichier /var/log/aws-sqsd/default.log vérifiez la demande HTTP POST que le démon d'Amazon SQS envoie à http://localhost/ sur le port 80. Cette demande est envoyée lorsque le démon interroge un élément de file d'attente.

Vous devriez voir un message semblable à celui-ci :

2019-07-05T13:54:52Z message: sent to http://localhost:80/

5.    Pour confirmer que les messages sont remis à la file d'attente SQS, vérifiez la métrique NumberOfMessagesReceived correspondant à la file d'attente associée à l'environnement de travail.

6.    Pour appeler la tâche planifiée manuellement, exécutez la commande suivante :

curl -d param1=value1 -d param2=value2 -H "Content-Type: application/json" -X POST http://localhost/scheduled-task-path

L'indicateur -d (--data) peut contenir les données que vous essayez de transmettre à la tâche périodique.

Remarque : Les tâches périodiques ne fonctionnent pas pour les environnements de travail configurés avec des files d'attente FIFO (First-In-First-Out) Amazon SQS.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?