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 MWAA Amazon-Umgebung mithilfe einer requirements.txt Datei in Ihrem Amazon 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 mazonMWAAFullConsoleAccessA-Zugriffskontrollrichtlinie für Ihre Umgebung erhalten haben. Darüber hinaus muss Ihrer MWAA Amazon-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-BucketDAGs, in dem Ihre benutzerdefinierten Plugins und Python-Abhängigkeiten gespeichert werdenplugins.zip, requirements.txt muss mit geblocktem öffentlichem Zugriff und aktivierter Versionierung konfiguriert sein.

Funktionsweise

Bei Amazon installieren Sie alle Python-AbhängigkeitenMWAA, 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 MWAA Amazon-Konsole angeben. Amazon installiert MWAA pip3 install -r requirements.txt die Python-Abhängigkeiten auf dem Apache Airflow Scheduler und jedem der Worker.

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 Local requirements.txt in Ihren Amazon S3 S3-Bucket hoch.

  3. Geben Sie die Version dieser Datei im Feld Anforderungsdatei auf der MWAA Amazon-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 MWAA Amazon-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 nach den Paketen in der requirements.txt Datei 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 installieren MWAA muss, desto länger ist die Startzeit in einer Umgebung. Amazon begrenzt zwar MWAA 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.

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

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

  • Das CLI erstellt lokal ein Docker-Container-Image, das einem MWAA Amazon-Produktions-Image ähnelt. Auf diese Weise können Sie eine lokale Apache Airflow-Umgebung ausführen, um benutzerdefinierte Plugins und Abhängigkeiten zu entwickeln und zu testenDAGs, bevor Sie sie auf Amazon MWAA bereitstellen.

  • Informationen zum CLI Ausführen von finden Sie aws-mwaa-local-runnerunter 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 MWAA CLI Amazon-Dienstprogramms finden Sie aws-mwaa-local-runnerunter GitHub.

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

  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, die Sie verwenden, kompatibel sind.

    Ersetzen Sie im folgenden Beispiel {environment-version} durch die Versionsnummer Ihrer Umgebung und {Python-version} mit der 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, schlägt pip3 install dies fehl, um zu verhindern, 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. Dadurch wird verhindert, 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, MWAA installiert Amazon die neueste Version des Pakets von PyPi.org. Diese Version kann zu Konflikten mit anderen Paketen in Ihrem führenrequirements.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 MWAA CLI Amazon-Dienstprogramms finden Sie aws-mwaa-local-runnerunter 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 airflow/constraints-1.10.12/constraints-3.7.txt an. https://raw.githubusercontent.com/apache/

  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 wird SSH für Apache Airflow v1.10.12 installiert.

    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, MWAA installiert Amazon die neueste Version des Pakets von PyPi.org. Diese Version kann zu Konflikten mit anderen Paketen in Ihrem führenrequirements.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 MWAA Amazon-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie im Bereich DAGCode 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.

Angabe des Pfads zu requirements.txt auf der MWAA Amazon-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 MWAA Amazon-Konsole angeben. Sie müssen diesen Schritt nur einmal ausführen.

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

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Edit (Bearbeiten) aus.

  4. Wählen Sie im Bereich DAGCode 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 MWAA Amazon-Konsole

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

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

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Edit (Bearbeiten) aus.

  4. Wählen Sie im Bereich DAGCode 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 MWAA Amazon-Konsole öffnen und Apache Airflow-Protokolle in der CloudWatch Logs-Konsole anzeigen.

Um Protokolle für ein anzuzeigen requirements.txt
  1. Öffnen Sie die Seite Umgebungen auf der MWAA Amazon-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-runneron GitHub.