Come posso creare cron job su istanze Amazon EC2 in ambienti Elastic Beanstalk?

3 minuti di lettura
0

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

Puoi utilizzare i file di configurazione di Elastic Beanstalk, denominati .ebextensions, per creare cron job 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 cron job 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 del repository AWS GitHub. In alternativa, puoi creare o aggiornare 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: quando assegni un nome al file di configurazione, tieni presente che nella directory .ebextensions vengono eseguiti più file di configurazione 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 si esegue lo script myscript.sh, questo restituisce come output la data e poi termina. Ogni volta che cron-linux.config viene applicato durante le distribuzioni, 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:

  1. Nel root della cartella dell'applicazione, crea una directory denominata .ebextensions.
  2. Sposta il file cron-linux.config che hai creato o aggiornato nella cartella**.ebextensions**.
  3. 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:

|-- .ebextensions|        |-- cron-linux.config
|        |-- other .config files
|-- other application files

Informazioni correlate

Configurazione degli ambienti Elastic Beanstalk

Personalizzazione di software su server Linux

Personalizzazione di software su server Windows

AWS UFFICIALE
AWS UFFICIALEAggiornata 7 mesi fa