Comment puis-je résoudre des problèmes liés aux tâches cron dans le niveau de travail de mon environnement Elastic Beanstalk ?

Date de la dernière mise à jour : 11/10/2019

Comment puis-je résoudre les problèmes liés aux tâches cron dans le niveau de travail de mon environnement AWS Elastic Beanstalk ?

Brève description

Si vos tâches cron n'apparaissent pas dans le niveau de travail, suivez les étapes de la section « Add cron jobs to a worker environment » (Ajouter des tâches cron à un environnement de travail). Si vos tâches cron n'apparaissent toujours pas dans le niveau de travail, suivez les étapes de la section « Troubleshoot issues with cron jobs in your worker environment » (Résolution de problèmes liés aux tâches cron dans votre environnement de travail).

Résolution

Ajouter des tâches cron à un environnement de travail

Pour ajouter une tâche cron au niveau de travail de votre environnement Elastic Beanstalk, ajoutez un fichier cron.yaml à la racine de votre code source. Consultez l'exemple suivant :

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

Remarque : dans l'exemple précédent, une tâche cron nommée « schedule » déclenche une demande « POST » (PUBLIER) au point de terminaison /schedule dans l'environnement de travail Elastic Beanstalk toutes les 12 heures.

Résolution de problèmes liés aux tâches cron dans votre environnement de travail

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 au vers http://localhost/ sur le port 80 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.

Remarque : vous pouvez également envoyer manuellement un message à la file d'attente pour vérifier la tâche cron.

6.    Pour appeler la tâche planifiée manuellement, exécutez la commande curl 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 cron.

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


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

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?