Je souhaite créer une tâche cron qui exécute un script personnalisé sur toutes les instances Amazon Elastic Compute Cloud (Amazon EC2). Les instances Amazon EC2 se trouvent dans un environnement AWS Elastic Beanstalk existant.
Brève description
À l'aide des fichiers de configuration Elastic Beanstalk, appelés .ebextensions, créez des tâches cron qui s'exécutent sur toutes les instances Amazon EC2 dans un environnement Elastic Beanstalk. Dans le fichier zip de l'application Elastic Beanstalk, créez un répertoire nommé .ebextensions. Le fichier .zip contient les fichiers de configuration qui s'exécutent lorsque l'application est déployée sur des instances Amazon EC2.
Remarque : les étapes de cet exemple ajoutent une tâche cron qui s'exécute simultanément sur toutes les instances Amazon EC2 dans un environnement Elastic Beanstalk. Si vous devez exécuter une tâche périodique sur une seule instance, utilisez le fichier cron-leaderonly-linux.config pour les environnements Web. Pour utiliser le fichier cron-leaderonly-linux-config, reportez-vous à cron-leaderonly-linux.config sur le site Web de GitHub. Si vous disposez d'un environnement de travail dédié, utilisez des tâches périodiques.
Résolution
Créer ou mettre à jour un fichier de configuration
Le fichier cron-linux.config contient deux clés : les fichiers et les commandes. La clé fichiers indique l'emplacement des fichiers cron mycron et myscript.sh sur les instances Elastic Beanstalk avec les autorisations de fichier requises. La clé commandes indique une liste de commandes à exécuter sur les instances. Téléchargez le modèle cron-linux.config depuis le site Web GitHub. Vous pouvez également créer ou mettre à jour un fichier de configuration existant en vous basant sur l’exemple suivant :
files:
"/etc/cron.d/mycron":
mode: "000644"
owner: root
group: root
content: |
* * * * * root /usr/local/bin/myscript.sh
"/usr/local/bin/myscript.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
date > /tmp/date
# Your actual script content
exit 0
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/mycron.bak"
Remarque : les fichiers de configuration multiples dans le répertoire .ebextensions sont exécutés par ordre alphabétique, en fonction de leur nom de fichier. Vous pouvez nommer votre fichier de configuration cron-linux.config.
Le fichier cron-linux.config crée un fichier cron nommé /etc/cron.d/mycron, configuré pour exécuter un script toutes les minutes. Le script myscript.sh affiche la date, puis s'arrête lorsqu'il s'exécute. À chaque application du fichier cron-linux.config pendant les déploiements, une sauvegarde du fichier /etc/cron.d/mycron nommée /etc/cron.d/mycron.bak est créée. La dernière commande du fichier cron-linux.config nettoie le répertoire /etc/cron.d et supprime le fichier /etc/cron.d/mycron.bak. Pour plus d'informations, reportez-vous à Personnalisation d'environnement avancée avec fichiers de configuration (.ebextensions).
Création d'un ensemble de sources d'applications
Pour ajouter le fichier de configuration au code source de votre application Web, suivez ces étapes :
- À la racine du dossier de votre application, créez un répertoire nommé .ebextensions.
- Déplacez le fichier cron-linux.config que vous avez créé ou mis à jour dans le dossier .ebextensions.
- Créez un dossier zip pour les fichiers de votre application et incluez le nouveau fichier de configuration.
Cet exemple montre la structure du répertoire .ebextensions et du fichier cron-linux.config dans le fichier zip de l'application :
~/my-app/
|-- .ebextensions/
| |-- cron-linux.config
| `-- other.config
|-- other application files
Informations connexes
Configuration des environnements Elastic Beanstalk
Personnalisation des logiciels sur des serveurs Linux
Personnalisation des logiciels sur des serveurs Windows