Python-Abhängigkeiten installieren - Amazon Managed 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. Auf dieser Seite 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 S3-Bucket beschrieben.

Voraussetzungen

Sie benötigen Folgendes, bevor Sie die Schritte auf dieser Seite abschließen können.

  • Berechtigungen — Ihr AWS Konto muss von Ihrem Administrator Zugriff auf die FullConsoleAmazonMWAA-Zugriffskontrollrichtlinie für Ihre Umgebung erhalten haben. Darüber hinaus muss Ihrer Amazon MWAA-Umgebung von Ihrer Ausführungsrolle der Zugriff auf die von Ihrer Umgebung verwendeten AWS Ressourcen gestattet werden.

  • Zugriff — Wenn Sie Zugriff auf öffentliche Repositorys benötigen, um Abhängigkeiten direkt auf dem Webserver zu installieren, muss Ihre Umgebung für den Zugriff auf öffentliche Netzwerk-Webserver konfiguriert sein. Weitere Informationen finden Sie unter Apache Airflow-Zugriffsmodi.

  • Amazon S3 S3-Konfiguration — Der Amazon S3 S3-Bucket, der zum Speichern Ihrer DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten verwendet wirdplugins.zip, requirements.txt muss mit geblocktem öffentlichen Zugriff und aktivierter Versionierung konfiguriert sein.

Funktionsweise

Auf Amazon MWAA installieren Sie alle Python-Abhängigkeiten, indem Sie eine requirements.txt Datei in Ihren Amazon S3 S3-Bucket hochladen und dann bei jeder Aktualisierung der Datei die Version der Datei auf der Amazon MWAA-Konsole angeben. Amazon MWAA wird ausgeführtpip3 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 das Lokale requirements.txt in Ihren Amazon S3 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 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 Package Index (PyPi.org), Python Wheels (.whl) oder Python-Abhängigkeiten installieren, die auf einem privaten PyPi /PEP-503-konformen Repo in Ihrer Umgebung gehostet werden.

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

Der Apache Airflow Scheduler und die Workers suchen beim Start auf dem AWS-verwalteten Fargate-Container für Ihre Umgebung unter nach benutzerdefinierten Plugins. /usr/local/airflow/plugins

  • 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 die Startzeit in einer Umgebung. Amazon MWAA begrenzt zwar nicht explizit die Größe der installierten Bibliotheken, aber wenn Abhängigkeiten nicht innerhalb von zehn Minuten installiert werden können, führt der Fargate-Service zu einem Timeout und versucht, die Umgebung auf einen stabilen Zustand zurückzusetzen.

Eine Datei requirements.txt erstellen

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

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

  • Das Befehlszeilenschnittstellenprogramm (CLI) repliziert eine Amazon Managed Workflows for Apache Airflow-Umgebung lokal.

  • Die CLI erstellt lokal ein Docker-Container-Image, das einem Amazon MWAA-Produktionsimage ähnelt. Auf diese Weise können Sie eine lokale Apache Airflow-Umgebung ausfü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-local-runner on. GitHub

Schritt zwei: Erstellen Sie das requirements.txt

Im folgenden Abschnitt wird beschrieben, wie Python-Abhängigkeiten aus dem Python-Paketindex in einer requirements.txt Datei angegeben werden.

Apache Airflow v2
  1. Testen Sie lokal. 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-local-runner on. GitHub

  2. Sehen Sie sich die Extras des Apache Airflow-Pakets an. Eine Liste der für Apache Airflow v2 auf Amazon MWAA installierten Pakete finden Sie auf der Website unter Amazon MWAA Local Runner. requirements.txt GitHub

  3. Fügen Sie eine Beschrä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 spezifizieren die Provider-Versionen, die zum Zeitpunkt einer Apache Airflow-Veröffentlichung verfügbar waren.

    Ab Apache Airflow v2.7.2 muss Ihre Anforderungsdatei eine Erklärung enthalten. --constraint Wenn Sie keine Einschränkung angeben, gibt Amazon MWAA eine für Sie an, 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 {environment-version} durch die Versionsnummer Ihrer Umgebung und {Python-version} durch die Version von Python, die mit Ihrer Umgebung kompatibel ist.

    Informationen zu der 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 Einschränkungsdatei feststellt, dass das xyz==1.0 Paket nicht mit anderen Paketen in Ihrer Umgebung kompatibel ist, kann nicht verhindert pip3 install werden, dass inkompatible Bibliotheken in Ihrer Umgebung installiert werden. Wenn die Installation eines Pakets fehlschlägt, können Sie die Fehlerprotokolle für jede Apache Airflow-Komponente (den Scheduler, den Worker und den Webserver) im entsprechenden Protokollstream unter CloudWatch Logs einsehen. Weitere Informationen zu Protokolltypen finden Sie unter. Airflow-Protokolle in Amazon anzeigen CloudWatch

  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 future aktuelles Update von PyPi.org 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 kann zu Konflikten mit anderen Paketen in Ihrem führen. requirements.txt

Apache Airflow v1
  1. Testen Sie lokal. 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-local-runner on. GitHub

  2. Sehen Sie sich die Extras des Airflow-Pakets an. Sehen Sie sich die Liste der für Apache Airflow v1.10.12 verfügbaren Pakete unter https://raw.githubusercontent.com/apache/airflow/constraints-1.10.12/constraints-3.7.txt an.

  3. Fügen Sie die Beschränkungsdatei hinzu. Fügen Sie die Einschränkungsdatei für Apache Airflow v1.10.12 am Anfang Ihrer Datei hinzu. requirements.txt Wenn die Einschränkungsdatei feststellt, dass das xyz==1.0 Paket nicht mit anderen Paketen in Ihrer Umgebung kompatibel ist, kann sie nicht verhindern, dass inkompatible Bibliotheken in Ihrer Umgebung installiert werden. pip3 install

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-1.10.12/constraints-3.7.txt"
  4. Apache Airflow v1.10.12-Pakete. Fügen Sie die Airflow-Paket-Extras und die Apache Airflow v1.10.12-Version () hinzu. == Dadurch wird verhindert, dass Pakete mit demselben Namen, aber unterschiedlicher Version in Ihrer Umgebung installiert werden.

    apache-airflow[package]==1.10.12
    Beispiel Secure Shell (SSH)

    Die folgende requirements.txt Beispieldatei installiert SSH für Apache Airflow v1.10.12.

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

    library == version
    Beispiel Boto3

    Die folgende requirements.txt Beispieldatei installiert die Boto3-Bibliothek für Apache Airflow v1.10.12.

    boto3 == 1.17.4

    Wenn ein Paket ohne Version angegeben wird, installiert Amazon MWAA die neueste Version des Pakets von PyPi .org. Diese Version kann zu Konflikten mit anderen Paketen in Ihrem führen. requirements.txt

Auf Amazon requirements.txt S3 hochladen

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

Mit dem AWS CLI

The 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 S3-Buckets aufzulisten.

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

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. Der folgende Befehl lädt eine requirements.txt Datei in einen Amazon S3 S3-Bucket hoch.

    aws s3 cp requirements.txt s3://YOUR_S3_BUCKET_NAME/requirements.txt

Verwenden der Amazon S3-Konsole

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

Um mit der Amazon S3 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 im Bereich DAG-Code im Bereich S3 den Link S3-Bucket aus, um Ihren Speicher-Bucket auf der Amazon S3 S3-Konsole zu öffnen.

  4. Klicken Sie auf Hochladen.

  5. Wählen Sie Datei hinzufügen.

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

Installation von Python-Abhängigkeiten in Ihrer Umgebung

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

Angeben des Pfads zu requirements.txt auf der Amazon MWAA-Konsole (beim ersten Mal)

Wenn Sie zum ersten Mal einen requirements.txt Bucket erstellen und in Ihren Amazon S3 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 in Amazon S3 neben dem Feld Anforderungsdatei — optional die Option S3 durchsuchen aus.

  5. Wählen Sie die requirements.txt Datei in Ihrem Amazon S3 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 requirements.txt Version auf der Amazon MWAA-Konsole

Sie müssen die Version Ihrer requirements.txt Datei auf der Amazon MWAA-Konsole jedes Mal angeben, wenn Sie eine neue Version Ihrer Datei requirements.txt in Ihren Amazon S3 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 Bereich DAG-Code in Amazon S3 eine requirements.txt Version aus 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.

Logs für Ihr anzeigen requirements.txt

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

Um Protokolle für ein anzuzeigen requirements.txt
  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 Protokollgruppe Airflow Scheduler aus.

  4. Wählen Sie unter requirements_install_ip Log-Streams die Option Log Streams aus.

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

    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. Überprüfen Sie die Liste der Pakete und ob bei der Installation eines dieser Pakete ein Fehler aufgetreten ist. Wenn etwas schief gelaufen ist, wird möglicherweise ein Fehler ähnlich dem folgenden angezeigt:

    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 dem aws-mwaa-local-runner on. GitHub