Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden eines Startskripts mit Amazon MWAA
Ein Startskript ist ein Shell (.sh
) -Skript, das Sie im Amazon S3 S3-Bucket Ihrer Umgebung hosten, ähnlich Ihren DAGs, Anforderungen und Plugins. Amazon MWAA führt dieses Skript beim Start auf jeder einzelnen Apache Airflow-Komponente (Worker, Scheduler und Webserver) aus, bevor die Anforderungen installiert und der Apache Airflow-Prozess initialisiert wird. Verwenden Sie ein Startskript, um Folgendes zu tun:
-
Laufzeiten installieren — Installieren Sie Linux-Laufzeiten, die für Ihre Workflows und Verbindungen erforderlich sind.
-
Umgebungsvariablen konfigurieren — Legen Sie Umgebungsvariablen für jede Apache Airflow-Komponente fest. Überschreiben Sie allgemeine Variablen wie
PATH
PYTHONPATH
, und.LD_LIBRARY_PATH
-
Schlüssel und Token verwalten — Übergeben Sie Zugriffstoken für benutzerdefinierte Repositorys an
requirements.txt
und konfigurieren Sie Sicherheitsschlüssel.
In den folgenden Themen wird beschrieben, wie Sie ein Startskript konfigurieren, um Linux-Laufzeiten zu installieren, Umgebungsvariablen festzulegen und verwandte Probleme mithilfe von CloudWatch Protokollen zu beheben.
Themen
Konfigurieren Sie ein Startskript
Um ein Startskript mit Ihrer bestehenden Amazon MWAA-Umgebung zu verwenden, laden Sie eine .sh
Datei in den Amazon S3 S3-Bucket Ihrer Umgebung hoch. Um das Skript dann der Umgebung zuzuordnen, geben Sie in Ihren Umgebungsdetails Folgendes an:
-
Der Amazon S3 S3-URL-Pfad zum Skript — Der relative Pfad zu dem in Ihrem Bucket gehosteten Skript, zum Beispiel
s3://mwaa-environment/
startup.sh
-
Die Amazon S3 S3-Versions-ID des Skripts — Die Version des Start-Shell-Skripts in Ihrem Amazon S3 S3-Bucket. Sie müssen die Versions-ID angeben, die Amazon S3 der Datei bei jeder Aktualisierung des Skripts zuweist. Versions-IDs sind Unicode-kodierte, UTF-8-kodierte, URL-fähige, undurchsichtige Zeichenketten, die beispielsweise nicht länger als 1.024 Byte sind.
3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Verwenden Sie das folgende Beispielskript, um die Schritte in diesem Abschnitt auszuführen. Das Skript gibt den Wert aus, der zugewiesen wurdeMWAA_AIRFLOW_COMPONENT
. Diese Umgebungsvariable identifiziert jede Apache Airflow-Komponente, auf der das Skript ausgeführt wird.
Kopieren Sie den Code und speichern Sie ihn lokal unter. startup.sh
#!/bin/sh echo "Printing Apache Airflow component" echo $MWAA_AIRFLOW_COMPONENT
Laden Sie als Nächstes das Skript in Ihren Amazon S3 S3-Bucket hoch.
Ordnen Sie das Skript nun Ihrer Umgebung zu.
Rufen Sie abschließend Protokollereignisse ab, um zu überprüfen, ob das Skript wie erwartet funktioniert. Wenn Sie die Protokollierung für jede Apache Airflow-Komponente aktivieren, erstellt Amazon MWAA eine neue Protokollgruppe und einen neuen Protokollstream. Weitere Informationen finden Sie unter Apache Airflow-Protokolltypen.
Installieren Sie Linux-Laufzeiten mithilfe eines Startskripts
Verwenden Sie ein Startskript, um das Betriebssystem einer Apache Airflow-Komponente zu aktualisieren, und installieren Sie zusätzliche Laufzeitbibliotheken, die Sie mit Ihren Workflows verwenden können. Das folgende Skript wird beispielsweise ausgeführt, yum update
um das Betriebssystem zu aktualisieren.
Bei yum update
der Ausführung in einem Startskript müssen Sie Python ausschließen, indem Sie, --exclude=python*
wie im Beispiel gezeigt, verwenden. Damit Ihre Umgebung ausgeführt werden kann, installiert Amazon MWAA eine bestimmte Version von Python, die mit Ihrer Umgebung kompatibel ist. Daher können Sie die Python-Version der Umgebung nicht mit einem Startskript aktualisieren.
#!/bin/sh echo "Updating operating system" sudo yum update -y --exclude=python*
Um Runtimes auf einer bestimmten Apache Airflow-Komponente zu installieren, verwenden Sie MWAA_AIRFLOW_COMPONENT
und if
und fi
bedingte Anweisungen. In diesem Beispiel wird ein einziger Befehl ausgeführt, um die libaio
Bibliothek auf dem Scheduler und Worker zu installieren, aber nicht auf dem Webserver.
Wichtig
-
Wenn Sie einen privaten Webserver konfiguriert haben, müssen Sie entweder die folgende Bedingung verwenden oder alle Installationsdateien lokal bereitstellen, um Zeitüberschreitungen bei der Installation zu vermeiden.
-
Wird verwendet
sudo
, um Operationen auszuführen, für die Administratorrechte erforderlich sind.
#!/bin/sh if [[ "${MWAA_AIRFLOW_COMPONENT}" != "webserver" ]] then sudo yum -y install libaio fi
Sie können ein Startskript verwenden, um die Python-Version zu überprüfen.
#!/bin/sh export PYTHON_VERSION_CHECK=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'` echo "Python version is $PYTHON_VERSION_CHECK"
Amazon MWAA unterstützt das Überschreiben der Standard-Python-Version nicht, da dies zu Inkompatibilitäten mit den installierten Apache Airflow-Bibliotheken führen kann.
Legen Sie Umgebungsvariablen mithilfe eines Startskripts fest
Verwenden Sie Startskripts, um Umgebungsvariablen festzulegen und Apache Airflow-Konfigurationen zu ändern. Im Folgenden wird eine neue Variable definiert,ENVIRONMENT_STAGE
. Sie können in einer DAG oder in Ihren benutzerdefinierten Modulen auf diese Variable verweisen.
#!/bin/sh export ENVIRONMENT_STAGE="development" echo "$ENVIRONMENT_STAGE"
Verwenden Sie Startskripts, um gängige Apache Airflow- oder Systemvariablen zu überschreiben. Sie legen beispielsweise fest, LD_LIBRARY_PATH
dass Python in dem von Ihnen angegebenen Pfad nach Binärdateien suchen soll. Auf diese Weise können Sie mithilfe von Plugins benutzerdefinierte Binärdateien für Ihre Workflows bereitstellen:
#!/bin/sh export LD_LIBRARY_PATH=/usr/local/airflow/plugins/
your-custom-binary
Reservierte Umgebungsvariablen
Amazon MWAA reserviert eine Reihe kritischer Umgebungsvariablen. Wenn Sie eine reservierte Variable überschreiben, setzt Amazon MWAA sie auf ihre Standardwerte zurück. Im Folgenden sind die reservierten Variablen aufgeführt:
-
MWAA__AIRFLOW__COMPONENT
— Wird verwendet, um die Apache Airflow-Komponente mit einem der folgenden Werte zu identifizieren:scheduler
,worker
, oderwebserver
. -
AIRFLOW__WEBSERVER__SECRET_KEY
— Der geheime Schlüssel, der zum sicheren Signieren von Sitzungscookies auf dem Apache Airflow-Webserver verwendet wird. -
AIRFLOW__CORE__FERNET_KEY
— Der Schlüssel, der für die Verschlüsselung und Entschlüsselung sensibler Daten verwendet wird, die in der Metadaten-Datenbank gespeichert sind, z. B. Verbindungskennwörter. -
AIRFLOW_HOME
— Der Pfad zum Apache Airflow-Home-Verzeichnis, in dem Konfigurationsdateien und DAG-Dateien lokal gespeichert werden. -
AIRFLOW__CELERY__BROKER_URL
— Die URL des Message Brokers, der für die Kommunikation zwischen dem Apache Airflow Scheduler und den Celery Worker Nodes verwendet wird. -
AIRFLOW__CELERY__RESULT_BACKEND
— Die URL der Datenbank, die zum Speichern der Ergebnisse von Celery-Aufgaben verwendet wird. -
AIRFLOW__CORE__EXECUTOR
— Die Executor-Klasse, die Apache Airflow verwenden soll. In Amazon MWAA ist dies einCeleryExecutor
-
AIRFLOW__CORE__LOAD_EXAMPLES
— Wird verwendet, um das Laden von Beispiel-DAGs zu aktivieren oder zu deaktivieren. -
AIRFLOW__METRICS__METRICS_BLOCK_LIST
— Wird verwendet, um zu verwalten, welche Apache Airflow-Metriken von Amazon MWAA ausgegeben und erfasst werden. CloudWatch -
SQL_ALCHEMY_CONN
— Die Verbindungszeichenfolge für die Datenbank RDS for PostgreSQL, die zum Speichern von Apache Airflow-Metadaten in Amazon MWAA verwendet wird. -
AIRFLOW__CORE__SQL_ALCHEMY_CONN
— Wird für denselben Zweck verwendet wieSQL_ALCHEMY_CONN
, folgt jedoch der neuen Apache Airflow-Namenskonvention. -
AIRFLOW__CELERY__DEFAULT_QUEUE
— Die Standardwarteschlange für Celery-Aufgaben in Apache Airflow. -
AIRFLOW__OPERATORS__DEFAULT_QUEUE
— Die Standardwarteschlange für Aufgaben, die bestimmte Apache Airflow-Operatoren verwenden. -
AIRFLOW_VERSION
— Die in der Amazon MWAA-Umgebung installierte Apache Airflow-Version. -
AIRFLOW_CONN_AWS_DEFAULT
— Die AWS Standardanmeldedaten, die für die Integration mit anderen AWS Diensten in verwendet werden. -
AWS_DEFAULT_REGION
— Legt die AWS Standardregion fest, die mit Standardanmeldedaten für die Integration mit anderen AWS Diensten verwendet wird. -
AWS_REGION
— Falls definiert, überschreibt diese Umgebungsvariable die Werte in der UmgebungsvariablenAWS_DEFAULT_REGION
und im Bereich der Profileinstellungen. -
PYTHONUNBUFFERED
— Wird zum Sendenstdout
undstderr
Streamen von Container-Logs verwendet. -
AIRFLOW__METRICS__STATSD_ALLOW_LIST
— Wird verwendet, um eine Zulassungsliste mit kommagetrennten Präfixen zu konfigurieren, um die Metriken zu senden, die mit den Elementen der Liste beginnen. -
AIRFLOW__METRICS__STATSD_ON
— Aktiviert das Senden von Metriken an.StatsD
-
AIRFLOW__METRICS__STATSD_HOST
— Wird verwendet, um eine Verbindung zumStatSD
Daemon herzustellen. -
AIRFLOW__METRICS__STATSD_PORT
— Wird verwendet, um eine Verbindung zumStatSD
Daemon herzustellen. -
AIRFLOW__METRICS__STATSD_PREFIX
— Wird verwendet, um eine Verbindung zumStatSD
Daemon herzustellen. -
AIRFLOW__CELERY__WORKER_AUTOSCALE
— Legt die maximale und minimale Parallelität fest. -
AIRFLOW__CORE__DAG_CONCURRENCY
— Legt die Anzahl der Task-Instanzen fest, die vom Scheduler gleichzeitig in einer DAG ausgeführt werden können. -
AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG
— Legt die maximale Anzahl aktiver Aufgaben pro DAG fest. -
AIRFLOW__CORE__PARALLELISM
— Definiert die maximale Anzahl von Task-Instanzen, die gleichzeitig ausgeführt werden können. -
AIRFLOW__SCHEDULER__PARSING_PROCESSES
— Legt die maximale Anzahl von Prozessen fest, die vom Scheduler analysiert werden, um DAGs zu planen. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT
— Definiert die Anzahl von Sekunden, die ein Worker auf die Bestätigung der Aufgabe wartet, bevor die Nachricht erneut an einen anderen Worker zugestellt wird. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__REGION
— Legt die AWS Region für den zugrunde liegenden Celerietransport fest. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__PREDEFINED_QUEUES
— Legt die Warteschlange für den zugrunde liegenden Celerietransport fest. -
AIRFLOW_SCHEDULER_ALLOWED_RUN_ID_PATTERN
— Wird verwendet, um die Gültigkeit Ihrer Eingabe für denrun_id
Parameter beim Auslösen einer DAG zu überprüfen. -
AIRFLOW__WEBSERVER__BASE_URL
— Die URL des Webservers, auf dem die Apache Airflow-Benutzeroberfläche gehostet wird.
Nicht reservierte Umgebungsvariablen
Sie können ein Startskript verwenden, um nicht reservierte Umgebungsvariablen zu überschreiben. Im Folgenden sind einige dieser allgemeinen Variablen aufgeführt:
-
PATH
— Gibt eine Liste von Verzeichnissen an, in denen das Betriebssystem nach ausführbaren Dateien und Skripten sucht. Wenn ein Befehl in der Befehlszeile ausgeführt wird, überprüft das System die Verzeichnisse, um den Befehl zu finden und auszuführen.PATH
Wenn Sie benutzerdefinierte Operatoren oder Aufgaben in Apache Airflow erstellen, müssen Sie sich möglicherweise auf externe Skripts oder ausführbare Dateien verlassen. Wenn sich die Verzeichnisse, die diese Dateien enthalten, nicht in den in derPATH
Variablen angegebenen Verzeichnissen befinden, können die Aufgaben nicht ausgeführt werden, wenn das System sie nicht finden kann. Durch Hinzufügen der entsprechenden Verzeichnisse können Apache Airflow-Aufgaben die erforderlichen ausführbaren Dateien finden und ausführen.PATH
-
PYTHONPATH
— Wird vom Python-Interpreter verwendet, um zu bestimmen, in welchen Verzeichnissen nach importierten Modulen und Paketen gesucht werden soll. Es ist eine Liste von Verzeichnissen, die Sie dem Standardsuchpfad hinzufügen können. Dadurch kann der Interpreter Python-Bibliotheken finden und laden, die nicht in der Standardbibliothek enthalten oder in Systemverzeichnissen installiert sind. Verwenden Sie diese Variable, um Ihre Module und benutzerdefinierten Python-Pakete hinzuzufügen und sie mit Ihren DAGs zu verwenden. -
LD_LIBRARY_PATH
— Eine Umgebungsvariable, die vom dynamischen Linker und Loader unter Linux verwendet wird, um gemeinsam genutzte Bibliotheken zu finden und zu laden. Sie spezifiziert eine Liste von Verzeichnissen, die gemeinsam genutzte Bibliotheken enthalten, die vor den Standardverzeichnissen der Systembibliotheken durchsucht werden. Verwenden Sie diese Variable, um Ihre benutzerdefinierten Binärdateien anzugeben. -
CLASSPATH
— Wird vom Java Runtime Environment (JRE) und dem Java Development Kit (JDK) verwendet, um Java-Klassen, -Bibliotheken und -Ressourcen zur Laufzeit zu finden und zu laden. Es ist eine Liste von Verzeichnissen, JAR-Dateien und ZIP-Archiven, die kompilierten Java-Code enthalten.