Wie erstelle ich Cron-Jobs auf Amazon EC2-Instances in Elastic Beanstalk-Umgebungen?
Ich möchte einen Cronjob erstellen, der ein benutzerdefiniertes Skript auf allen Amazon Elastic Compute Cloud (Amazon EC2)-Instances ausführt. Die Amazon-EC2-Instances befinden sich in einer bestehenden AWS Elastic-Beanstalk-Umgebung.
Kurzbeschreibung
Verwenden Sie Elastic Beanstalk-Konfigurationsdateien, die als .ebextensions bezeichnet werden, um Cron-Jobs zu erstellen, die auf allen Amazon EC2-Instances in einer Elastic Beanstalk-Umgebung ausgeführt werden. Erstellen Sie in der ZIP-Datei der Elastic-Beanstalk-Anwendung ein Verzeichnis mit dem Namen .ebextensions. Die ZIP-Datei enthält Konfigurationsdateien, die ausgeführt werden, wenn die Anwendung auf Amazon EC2-Instances bereitgestellt wird.
**Hinweis:**Die Schritte in diesem Beispiel fügen einen Cron-Job hinzu, der auf allen Amazon EC2-Instances in einer Elastic Beanstalk-Umgebung gleichzeitig ausgeführt wird. Wenn Sie eine regelmäßige Aufgabe auf nur einer Instance ausführen wollen, sollten Sie die Datei cron-leaderonly-linux.config für Webumgebungen verwenden. Informationen zur Verwendung der Datei cron-leaderonly-linux-config finden Sie unter cron-leaderonly-linux.config auf der GitHub-Website. Wenn Sie über eine spezielle Arbeitsumgebung verfügen, verwenden Sie regelmäßige Aufgaben.
Lösung
Erstellen oder Aktualisieren Ihrer Konfigurationsdatei
Die Datei cron-linux.config enthält zwei Schlüssel: Dateien und Befehle. Das Kürzel Dateien gibt den Speicherort der Cron-Dateien mycron und myscript.sh auf Elastic-Beanstalk-Instances mit den erforderlichen Dateiberechtigungen an. Das Kürzel Befehle gibt eine Liste von Befehlen an, die auf den Instances ausgeführt werden sollen. Laden Sie die Vorlage cron-linux.config von der Website des AWS-GitHub-Repository herunter. Alternativ können Sie eine vorhandene Konfigurationsdatei anhand des folgenden Beispiels erstellen oder aktualisieren:
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"
**Hinweis:**Beachten Sie bei der Benennung Ihrer Konfigurationsdatei, dass mehrere Konfigurationsdateien im Verzeichnis .ebextensions in alphabetischer Reihenfolge nach Dateinamen ausgeführt werden. Sie können Ihre Konfigurationsdatei cron-linux.config nennen.
Die Datei cron-linux.config erstellt eine Cron-Datei mit dem Namen /etc/cron.d/mycron, die so konfiguriert ist, dass sie jede Minute ein Skript ausführt. Das Skript myscript.sh gibt das Datum aus und wird dann beendet, wenn es ausgeführt wird. Jedes Mal, wenn cron-linux.config während einer Bereitstellung angewendet wird, wird eine Sicherungskopie der Datei /etc/cron.d/mycron mit dem Namen /etc/cron.d/mycron.bak erstellt. Der letzte Befehl in cron-linux.config bereinigt das Verzeichnis /etc/cron.d und entfernt /etc/cron.d/mycron.bak. Weitere Informationen finden Sie unter Erweiterte Umgebungsanpassung mit Konfigurationsdateien (.ebextensions).
Erstellen eines Anwendungsquellpakets
Gehen Sie wie folgt vor, um die Konfigurationsdatei zum Anwendungsquellcode Ihrer Webanwendung hinzuzufügen:
- Erstellen Sie im Stammverzeichnis Ihres Anwendungspakets ein Verzeichnis mit dem Namen ebextensions.
- Verschieben Sie die Datei cron-linux.config, die Sie erstellt oder aktualisiert haben, in das Verzeichnis .ebextensions.
- Erstellen Sie einen ZIP-Ordner für Ihre Anwendungsdateien, der die neue Konfigurationsdatei einschließt.
Das folgende Beispiel zeigt die Struktur des Verzeichnisses .ebextensions und der Datei cron-linux.config in der ZIP-Datei der Anwendung:
|-- .ebextensions| |-- cron-linux.config | |-- other .config files |-- other application files
Verwandte Informationen
Konfiguration von Elastic Beanstalk-Umgebungen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 7 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 9 Monaten