Come posso creare cron job su istanze Amazon EC2 in ambienti Elastic Beanstalk?
Voglio creare un cron job che esegua uno script personalizzato su tutte le istanze di Amazon Elastic Compute Cloud (Amazon EC2). Le istanze di Amazon EC2 si trovano in un ambiente AWS Elastic Beanstalk esistente.
Breve descrizione
Usa i file di configurazione Elastic Beanstalk, denominati .ebextensions, per creare processi cron che vengono eseguiti su tutte le istanze di Amazon EC2 in un ambiente Elastic Beanstalk. Nel file zip dell'applicazione Elastic Beanstalk, crea una directory denominata .ebextensions. Il file zip contiene i file di configurazione che vengono eseguiti quando l'applicazione viene distribuita su istanze Amazon EC2.
Nota: i passaggi di questo esempio aggiungono un processo cron che viene eseguito contemporaneamente su tutte le istanze di Amazon EC2 in un ambiente Elastic Beanstalk. Se hai un'attività periodica da eseguire su una singola istanza, usa il file cron-leaderonly-linux.config per ambienti Web. Per usare il file cron-leaderonly-linux-config, consulta cron-leaderonly-linux.config sul sito Web di GitHub. Se disponi di un ambiente worker dedicato, utilizza le attività periodiche.
Risoluzione
Crea o aggiorna il tuo file di configurazione
Nel file cron-linux.config sono presenti due chiavi: files e commands. La chiave files specifica la posizione dei file cron mycron e myscript.sh nelle istanze di Elastic Beanstalk con le autorizzazioni file necessarie. La chiave commands specifica un elenco di comandi da eseguire sulle istanze. Scarica il modello cron-linux.config dal sito Web GitHub. Oppure crea o aggiorna un file di configurazione esistente in base al seguente esempio:
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"
Nota: se sono presenti più file di configurazione nella directory .ebextensions, verranno eseguiti in ordine alfabetico in base al nome del file. Puoi assegnare un nome al file di configurazione cron-linux.config.
Il file cron-linux.config crea un file cron denominato /etc/cron.d/mycron ed è configurato per eseguire uno script ogni minuto. Quando viene eseguito, lo script myscript.sh restituisce come output la data e poi termina. Ogni volta che cron-linux.config viene applicato durante le implementazioni, viene creato un backup del file /etc/cron.d/mycron, denominato /etc/cron.d/mycron.bak. L'ultimo comando in cron-linux.config pulisce la directory /etc/cron.d e rimuove /etc/cron.d/mycron.bak. Per ulteriori informazioni, consulta Personalizzazione avanzata dell'ambiente con i file di configurazione (.ebextensions).
Crea un bundle sorgente di applicazioni
Per aggiungere il file di configurazione al codice sorgente dell'applicazione Web, completa i seguenti passaggi:
- Nel root della cartella dell'applicazione, crea una directory denominata .ebextensions.
- Sposta il file cron-linux.config che hai creato o aggiornato nella cartella**.ebextensions**.
- Crea una cartella zip per i file dell'applicazione e includi il nuovo file di configurazione.
Questo esempio mostra la struttura della directory .ebextensions e del file cron-linux.config nel file zip dell'applicazione:
~/my-app/ |-- .ebextensions/ | |-- cron-linux.config | `-- other.config |-- other application files
Informazioni correlate
Configurazione degli ambienti Elastic Beanstalk
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 8 mesi fa
- AWS UFFICIALEAggiornata 6 mesi fa