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 ?

Lecture de 3 minute(s)
0

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

Résolution

Remarque : Elastic Beanstalk utilise le rôle de profil d'instance aws-elasticbeanstalk-ec2-role. Ce rôle est fourni avec les autorisations gérées AWSElasticBeanstalkWebTier, AWSElasticBeanstalkWorkerTier et AWSElasticBeanstalkMulticontainerDocker. AWSElasticBeanstalkWorkerTier est nécessaire au bon fonctionnement des tâches périodiques. Pour plus d'informations, reportez-vous à la Gestion des profils d'instance Elastic Beanstalk.

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 de planification envoie régulièrement un message Amazon Simple Queue Service (Amazon SQS) décrivant la tâche. La tâche de planification renvoie le message en tête de la file d'attente toutes les 12 heures. Une fois que le message a remonté la file d'attente, une instance récupère la tâche 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ésoudre les problèmes liés aux tâches périodiques suivante.

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

1.    Dans votre fichier de plateforme /var/log/aws-sqsd/default.log, recherchez un journal du type :

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 d'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 du type :

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, vérifiez la demande HTTP POST envoyée par le démon d'Amazon SQS à http://localhost/ sur le port 80. Lorsque le démon interroge l'élément de la file d'attente, il envoie la demande.

Vous verrez un message du type :

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

4.    Pour confirmer que la file d'attente d'Amazon SQS reçoit les messages, vérifiez la métrique NumberOfMessagesReceived correspondant à la file d'attente associée à l'environnement de travail.

5.    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.


Informations connexes

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

Tâches périodiques

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an