View a markdown version of this page

Python-Abhängigkeiten installieren - Von Amazon verwaltete Workflows für Apache Airflow

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.

Python-Abhängigkeiten installieren

Eine Python-Abhängigkeit ist jedes Paket oder jede Distribution, die nicht in der Apache Airflow-Basisinstallation für Ihre Apache Airflow-Version in Ihrer Amazon Managed Workflows for Apache Airflow-Umgebung enthalten ist. In diesem Thema werden die Schritte zur Installation von Apache Airflow-Python-Abhängigkeiten in Ihrer Amazon MWAA-Umgebung mithilfe einer requirements.txt Datei in Ihrem Amazon S3-Bucket beschrieben.

Voraussetzungen

Sie benötigen Folgendes, bevor Sie die Schritte auf dieser Seite ausführen können.

Funktionsweise

Auf Amazon MWAA installieren Sie alle Python-Abhängigkeiten, indem Sie eine requirements.txt Datei in Ihren Amazon S3-Bucket hochladen und dann bei jeder Aktualisierung der Datei die Version der Datei auf der Amazon MWAA-Konsole angeben. Amazon MWAA wird ausgeführt, pip3 install -r requirements.txt um die Python-Abhängigkeiten auf dem Apache Airflow-Scheduler und jedem der Worker zu installieren.

Um Python-Abhängigkeiten in Ihrer Umgebung auszuführen, müssen Sie drei Dinge tun:

  1. Erstellen Sie lokal eine requirements.txt Datei.

  2. Laden Sie die lokale Datei requirements.txt in Ihren Amazon S3-Bucket hoch.

  3. Geben Sie die Version dieser Datei im Feld Anforderungsdatei auf der Amazon MWAA-Konsole an.

Anmerkung

Wenn Sie zum ersten Mal einen requirements.txt Bucket erstellen und in Ihren Amazon S3-Bucket hochladen, müssen Sie auch den Pfad zu der Datei auf der Amazon MWAA-Konsole angeben. Sie müssen diesen Schritt nur einmal ausführen.

Überblick über die Python-Abhängigkeiten

Sie können Apache Airflow-Extras und andere Python-Abhängigkeiten aus dem Python-Paketindex (PyPi.org), Python-Wheels (.whl) oder Python-Abhängigkeiten installieren, die auf einem privaten PyPi/PEP-503 kompatiblen Repo in Ihrer Umgebung gehostet werden.

Standort- und Größenbeschränkungen für Python-Abhängigkeiten

Der Apache Airflow-Scheduler und die Worker suchen in der requirements.txt Datei nach den Paketen und die Pakete werden in der Umgebung unter installiert. /usr/local/airflow/.local/bin

  • Größenbeschränkung. Wir empfehlen eine requirements.txt Datei, die auf Bibliotheken verweist, deren Gesamtgröße weniger als 1 GB beträgt. Je mehr Bibliotheken Amazon MWAA installieren muss, desto länger dauert der Start in einer Umgebung. Amazon MWAA begrenzt die Größe der installierten Bibliotheken zwar nicht explizit, aber wenn Abhängigkeiten nicht innerhalb von zehn Minuten installiert werden können, kommt es beim Fargate-Dienst zu einem Timeout und es wird versucht, die Umgebung in einen stabilen Zustand zurückzusetzen.

Eine Datei requirements.txt wird erstellt

In den folgenden Schritten werden die Schritte beschrieben, die wir empfehlen, um eine Datei requirements.txt lokal zu erstellen.

Erster Schritt: Testen Sie Python-Abhängigkeiten mit dem Amazon MWAA-CLI-Hilfsprogramm

  • Das Befehlszeilenschnittstellen-Dienstprogramm (CLI) repliziert lokal eine Amazon Managed Workflows für die Apache Airflow-Umgebung.

  • Die CLI erstellt lokal ein Docker-Container-Image, das einem Amazon MWAA-Produktionsimage ähnelt. Sie können dies verwenden, um eine lokale Apache Airflow-Umgebung auszuführen, um DAGs, benutzerdefinierte Plugins und Abhängigkeiten zu entwickeln und zu testen, bevor Sie sie auf Amazon MWAA bereitstellen.

  • Informationen zum Ausführen der CLI finden Sie unter aws-mwaa-docker-images on. https://github.com/aws/amazon-mwaa-docker-images GitHub

Schritt zwei: Erstellen Sie die Datei requirements.txt

Der folgende Abschnitt beschreibt, wie Sie Python-Abhängigkeiten aus dem Python-Paketindex in einer requirements.txt Datei angeben.

Apache Airflow v3
  1. Lokal testen. Fügen Sie iterativ weitere Bibliotheken hinzu, um die richtige Kombination von Paketen und ihren Versionen zu finden, bevor Sie eine requirements.txt Datei erstellen. Informationen zum Ausführen des Amazon MWAA-CLI-Dienstprogramms finden Sie unter aws-mwaa-docker-images on. GitHub

  2. Sehen Sie sich die Extras des Apache Airflow-Pakets an. Eine Liste der Pakete, die für Apache Airflow v3 auf Amazon MWAA installiert sind, finden Sie auf der Website unter requirements.txt aws-mwaa-docker-images. GitHub

  3. Fügen Sie eine Einschränkungsanweisung hinzu. Fügen Sie die Einschränkungsdatei für Ihre Apache Airflow v3-Umgebung am Anfang Ihrer requirements.txt Datei hinzu. Die Apache Airflow-Einschränkungsdateien geben die Provider-Versionen an, die zum Zeitpunkt einer Apache Airflow-Version verfügbar sind.

    Ersetzen Sie im folgenden Beispiel {Airflow-version} durch die Airflow-Version Ihrer Umgebung. Ersetzen Sie es {Python-version} durch die Python-Version, die mit Ihrer Umgebung kompatibel ist.

    Informationen über die Version von Python, die mit Ihrer Apache Airflow-Umgebung kompatibel ist, finden Sie unter Apache Airflow-Versionen.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Wenn die Constraints-Datei feststellt, dass das xyz==1.0 Paket nicht mit anderen Paketen in Ihrer Umgebung kompatibel ist, pip3 install wird nicht verhindert, dass inkompatible Bibliotheken in Ihrer Umgebung installiert werden. Wenn die Installation eines Pakets fehlschlägt, können Sie auf die Fehlerprotokolle für jede Apache Airflow-Komponente (den Scheduler, den Worker und den Webserver) im entsprechenden Log-Stream unter Logs zugreifen. CloudWatch Weitere Informationen zu Protokolltypen finden Sie unter. Zugreifen auf Airflow-Protokolle in Amazon CloudWatch

    Versionen der Constraint-Dateien aktualisieren

    Informationen zum Aktualisieren der Versionen in der Constraint-Datei finden Sie unter Constraints-Datei.

  4. Apache Airflow-Pakete. Fügen Sie die Paket-Extras und die Version (==) hinzu. Dies hilft zu verhindern, dass Pakete mit demselben Namen, aber unterschiedlicher Version, in Ihrer Umgebung installiert werden.

    apache-airflow[package-extra]==3.2.1
  5. Python-Bibliotheken. Fügen Sie den Paketnamen und die Version (==) in Ihre requirements.txt Datei ein. Auf diese Weise wird verhindert, dass ein zukünftiges PyPi.org aktuelles Update automatisch angewendet wird.

    library == version
    Beispiel Boto3 und psycopg2-binary

    Dieses Beispiel dient zu Demonstrationszwecken. Die Bibliotheken boto und psycopg2-binary sind in der Basisinstallation für Apache Airflow v3 enthalten und müssen nicht in einer Datei angegeben werden. requirements.txt

    boto3==1.42.84 botocore==1.42.84 psycopg2-binary==2.9.11

    Wenn ein Paket ohne Version angegeben wird, installiert Amazon MWAA die neueste Version des Pakets von. PyPi.org Diese Version könnte mit anderen Paketen in Ihrem in Konflikt geraten. requirements.txt

Apache Airflow v2
  1. Lokal testen. Fügen Sie iterativ weitere Bibliotheken hinzu, um die richtige Kombination von Paketen und ihren Versionen zu finden, bevor Sie eine requirements.txt Datei erstellen. Informationen zum Ausführen des Amazon MWAA-CLI-Dienstprogramms finden Sie unter aws-mwaa-docker-images on. GitHub

  2. Sehen Sie sich die Extras des Apache Airflow-Pakets an. Um auf eine Liste der Pakete zuzugreifen, die für Apache Airflow v2 auf Amazon MWAA installiert sind, rufen Sie auf der Website requirements.txt aws-mwaa-docker-images auf. GitHub

  3. Fügen Sie eine Einschränkungsanweisung hinzu. Fügen Sie die Einschränkungsdatei für Ihre Apache Airflow v2-Umgebung am Anfang Ihrer requirements.txt Datei hinzu. Apache Airflow-Einschränkungsdateien geben die Provider-Versionen an, die zum Zeitpunkt einer Apache Airflow-Version verfügbar sind.

    Ab Apache Airflow v2.7.2 muss Ihre Anforderungsdatei eine Erklärung enthalten. --constraint Wenn Sie keine Einschränkung angeben, wird Amazon MWAA eine für Sie angeben, um sicherzustellen, dass die in Ihren Anforderungen aufgeführten Pakete mit der Version von Apache Airflow kompatibel sind, die Sie verwenden.

    Ersetzen Sie im folgenden Beispiel durch die {Airflow-version} Airflow-Version Ihrer Umgebung. Ersetzen Sie es {Python-version} durch die Python-Version, die mit Ihrer Umgebung kompatibel ist.

    Informationen über die Version von Python, die mit Ihrer Apache Airflow-Umgebung kompatibel ist, finden Sie unter Apache Airflow-Versionen.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Wenn die Constraints-Datei feststellt, dass das xyz==1.0 Paket nicht mit anderen Paketen in Ihrer Umgebung kompatibel ist, pip3 install wird nicht verhindert, dass inkompatible Bibliotheken in Ihrer Umgebung installiert werden. Wenn die Installation eines Pakets fehlschlägt, können Sie auf die Fehlerprotokolle für jede Apache Airflow-Komponente (den Scheduler, den Worker und den Webserver) im entsprechenden Log-Stream unter Logs zugreifen. CloudWatch Weitere Informationen zu Protokolltypen finden Sie unter. Zugreifen auf Airflow-Protokolle in Amazon CloudWatch

    Versionen der Constraint-Dateien aktualisieren

    Informationen zum Aktualisieren der Versionen in der Constraint-Datei finden Sie unter Constraints-Datei.

  4. Apache Airflow-Pakete. Fügen Sie die Paket-Extras und die Version (==) hinzu. Dies hilft zu verhindern, dass Pakete mit demselben Namen, aber unterschiedlicher Version, in Ihrer Umgebung installiert werden.

    apache-airflow[package-extra]==2.5.1
  5. Python-Bibliotheken. Fügen Sie den Paketnamen und die Version (==) in Ihre requirements.txt Datei ein. Auf diese Weise wird verhindert, dass ein zukünftiges PyPi.org aktuelles Update automatisch angewendet wird.

    library == version
    Beispiel Boto3 und psycopg2-binary

    Dieses Beispiel dient zu Demonstrationszwecken. Die Bibliotheken boto und psycopg2-binary sind in der Apache Airflow v2-Basisinstallation enthalten und müssen nicht in einer Datei angegeben werden. requirements.txt

    boto3==1.17.54 boto==2.49.0 botocore==1.20.54 psycopg2-binary==2.8.6

    Wenn ein Paket ohne Version angegeben wird, installiert Amazon MWAA die neueste Version des Pakets von. PyPi.org Diese Version könnte mit anderen Paketen in Ihrem in Konflikt geraten. requirements.txt

requirements.txt wird auf Amazon S3 hochgeladen

Sie können die Amazon S3-Konsole oder die AWS Command Line Interface (AWS CLI) verwenden, um eine requirements.txt Datei in Ihren Amazon S3-Bucket hochzuladen.

Verwendung der AWS CLI

AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können. Um die Schritte auf dieser Seite abzuschließen, benötigen Sie Folgendes:

Zum Hochladen mit dem AWS CLI
  1. Verwenden Sie den folgenden Befehl, um alle Ihre Amazon S3-Buckets aufzulisten.

    aws s3 ls
  2. Verwenden Sie den folgenden Befehl, um die Dateien und Ordner im Amazon S3-Bucket für Ihre Umgebung aufzulisten.

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. Mit dem folgenden Befehl wird eine requirements.txt Datei in einen Amazon S3-Bucket hochgeladen.

    aws s3 cp requirements.txt s3://amzn-s3-demo-bucket/requirements.txt

Verwenden der Amazon S3-Konsole

Die Amazon S3-Konsole ist eine webbasierte Benutzeroberfläche, mit der Sie die Ressourcen in Ihrem Amazon S3-Bucket erstellen und verwalten können.

Um mit der Amazon S3-Konsole hochzuladen
  1. Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie den S3-Bucket-Link im DAG-Code im S3-Bereich aus, um Ihren Speicher-Bucket in der Konsole zu öffnen.

  4. Klicken Sie auf Upload.

  5. Wählen Sie Datei hinzufügen.

  6. Wählen Sie die lokale Kopie von aus requirements.txt und wählen Sie Hochladen.

Installieren Sie Python-Abhängigkeiten in Ihrer Umgebung

In diesem Abschnitt wird beschrieben, wie Sie die Abhängigkeiten installieren, die Sie in Ihren Amazon S3-Bucket hochgeladen haben, indem Sie den Pfad zur Datei requirements.txt angeben und bei jeder Aktualisierung die Version der Datei requirements.txt angeben.

Angabe des Pfads zu requirements.txt auf der Amazon MWAA-Konsole (das erste Mal)

Wenn Sie zum ersten Mal einen requirements.txt erstellen und in Ihren Amazon S3-Bucket hochladen, müssen Sie auch den Pfad zu der Datei auf der Amazon MWAA-Konsole angeben. Sie müssen diesen Schritt nur einmal ausführen.

  1. Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Bearbeiten aus.

  4. Wählen Sie im Bereich „DAG-Code“ im Bereich „Amazon S3“ neben dem Feld „Anforderungsdatei — optional“ die Option „S3 durchsuchen“ aus.

  5. Wählen Sie die requirements.txt Datei in Ihrem Amazon S3-Bucket aus.

  6. Wählen Sie Choose (Auswählen) aus.

  7. Wählen Sie Weiter, Umgebung aktualisieren.

Sie können sofort nach Abschluss der Aktualisierung Ihrer Umgebung mit der Verwendung der neuen Pakete beginnen.

Angabe der Version von requirements.txt auf der Amazon MWAA-Konsole

Sie müssen die Version Ihrer requirements.txt Datei in der Amazon MWAA-Konsole jedes Mal angeben, wenn Sie eine neue Version Ihrer Datei requirements.txt in Ihren Amazon S3-Bucket hochladen.

  1. Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Bearbeiten aus.

  4. Wählen Sie im DAG-Code im Amazon S3-Bereich eine requirements.txt Version in der Dropdownliste aus.

  5. Wählen Sie Weiter, Umgebung aktualisieren.

Sie können sofort nach Abschluss der Aktualisierung Ihrer Umgebung mit der Verwendung der neuen Pakete beginnen.

Zugreifen auf Protokolle für Ihre requirements.txt

Sie können die Apache Airflow-Protokolle für den Scheduler einsehen, der Ihre Workflows plant und Ihren Ordner analysiert. dags In den folgenden Schritten wird beschrieben, wie Sie die Protokollgruppe für den Scheduler auf der Amazon MWAA-Konsole öffnen und in der Logs-Konsole auf die Apache Airflow-Protokolle zugreifen. CloudWatch

So greifen Sie auf Protokolle für eine Datei requirements.txt zu
  1. Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie im Bereich Überwachung die Airflow Scheduler-Protokollgruppe aus.

  4. Wählen Sie das requirements_install_ip Log in Log Streams aus.

  5. Weitere Informationen finden Sie in der Liste der Pakete, die in der Umgebung unter installiert wurden/usr/local/airflow/.local/bin. Beispiel:

    Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1)) Downloading https://files.pythonhosted.org/packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))
  6. Prüfen Sie die Liste der Pakete und ob bei einem dieser Pakete während der Installation ein Fehler aufgetreten ist. Wenn etwas schief gelaufen ist, erhalten Sie eine Fehlermeldung ähnlich der folgenden:

    2021-03-05T14:34:42.731-07:00 No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4)) No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4))

Als nächstes

Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit https://github.com/aws/amazon-mwaa-docker-images aws-mwaa-docker-images on. GitHub