Comment puis-je ajouter des tâches périodiques au niveau de travail de mon environnement Elastic Beanstalk et résoudre des problèmes lorsque les tâches périodiques n’apparaissent pas ?

Lecture de 3 minute(s)
0

Je souhaite ajouter des tâches périodiques au niveau de travail de mon environnement AWS Elastic Beanstalk. Je souhaite également résoudre les problèmes liés aux tâches périodiques qui n'apparaissent pas.

Résolution

Remarque : Elastic Beanstalk utilise le profil d'instance Amazon Elastic Compute Cloud (Amazon EC2) aws-elasticbeanstalk-ec2-role qui inclut les autorisations gérées AWSElasticBeanstalkWebTier, AWSElasticBeanstalkWorkerTier et AWSElasticBeanstalkMulticontainerDocker. AWSElasticBeanstalkWorkerTier est requis pour que les tâches périodiques fonctionnent.

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, incluez un fichier cron.yaml à la racine de votre code source.

Exemple :

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

Remarque : Dans l'exemple précédent, la tâche de planification envoie périodiquement un message Amazon Simple Queue Service (Amazon SQS) qui décrit la tâche. La tâche de planification envoie le message au début de la file d'attente toutes les 12 heures. Une fois que le message a franchi la file d'attente, une instance reprend la tâche d'envoyer une requête HTTP POST au point de terminaison « /schedule ».

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

Si vos tâches périodiques n'apparaissent pas dans le niveau de travail une fois que vous les avez ajoutées, procédez comme suit :

  1. Dans votre fichier /var/log/aws-sqsd/default.log, recherchez un journal similaire au suivant :

    schedule-parser: Successfully loaded 1 scheduled tasks from file /var/app/current/cron.yaml .
  2. Dans votre fichier /var/log/aws-sqsd/default.log, vérifiez que le démon Amazon SQS est en cours d'exécution et interroge la file d'attente appropriée.
    Si le démon Amazon SQS démarre correctement, des journaux similaires aux journaux suivants s'affichent :

    2023-01-17T03:28:31Z init: initializing aws-sqsd 3.0.4 (2022-03-18)
    2023-01-17T03:28:31Z schedule-parser: Successfully loaded 1 scheduled tasks from file /var/app/current/cron.yaml .
    2023-01-17T03:28:31Z leader-election:  initialized leader election
    2023-01-17T03:28:31Z scheduler: initialized 1 job's pending time
    2023-01-17T03:28:31Z pollers: start initializting poller timer...
    2023-01-17T03:28:31Z pollers: start auto running poller...
    2023-01-17T03:28:31Z leader-election:  Starting leader election
    2023-01-17T03:28:31Z leader-election:  current role: worker
    2023-01-17T03:28:31Z scheduler: Starting scheduler
    2023-01-17T03:28:31Z start: polling https://sqs.us-east-1.amazonaws.com/111122223333/yourWorkerQueue
  3. Dans votre fichier /var/log/aws-sqsd/default.log, recherchez la requête HTTP POST que le démon Amazon SQS envoie à http://localhost/ sur le port 80. Le démon envoie la requête lorsqu'il interroge l'élément de la file d'attente.
    Un message similaire au message suivant s'affiche :

    2019-07-05T13:54:52Z message: sent to http://localhost:80/
  4. Pour confirmer que la file d'attente SQS reçoit les messages, vérifiez la métrique Amazon CloudWatch NumberOfMessagesReceived pour la file d'attente associée à l'environnement de travail.

  5. Pour invoquer manuellement la tâche planifiée, 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'identification -d (--data) peut contenir les données que vous essayez de transmettre à la tâche périodique.

Remarque : Si vous utilisez des files d'attente FIFO Amazon SQS pour configurer votre environnement de travail, les tâches périodiques ne fonctionnent pas.

Informations connexes

Comment puis-je créer des tâches cron sur des instances Amazon EC2 dans des environnements Elastic Beanstalk ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois