Direkt zum Inhalt

Wie installiere ich Phyton-Bibliotheken in meiner Amazon MWAA-Umgebung?

Lesedauer: 4 Minute
0

Ich möchte Phyton-Bibliotheken in meinen Amazon Managed Workflows für eine Apache Airflow (Amazon MWAA)-Umgebung installieren.

Kurzbeschreibung

Amazon MWAA bietet Zugriffsmodi für öffentliche und private Netzwerke auf Webservern.

Um Python-Abhängigkeiten in einer Amazon MWAA-Umgebung mit einem privaten Webserver zu installieren, verwende Python wheels .whl.

Um Python-Bibliotheken in einer Amazon MWAA-Umgebung zu installieren, verwende entweder requirements.txt oder plugins.zip. Wenn du requirements.txt verwendest, installiert pip standardmäßig die aufgelisteten Pakete aus dem Python-Paketindex (PyPI). Wenn du benutzerdefinierte Bibliotheken oder Pakete mit kompilierten Artefakten als.whl-Dateien installierst, verwende die Datei plugins.zip. Du musst die Datei plugins.zip verwenden, wenn du benutzerdefinierte Amazon MWAA-Operationen, Hooks, Sensoren oder Schnittstellen installierst. Das Plugin exportiert Umgebungsvariablen, Authentifizierungs- und Konfigurationsdateien wie.crt und.yaml.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen auf Fehlermeldungen stößt, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Stelle sicher, dass du die Voraussetzungen erfüllst, bevor du beginnst.

Lokale Amazon MWAA-Umgebung einrichten

Führe die folgenden Schritte aus:

  1. Verwende die AWS-CLI, um das Docker-Image zu erstellen und richte dann eine lokale Amazon MWAA-Umgebung ein.

    Hinweis: Das Amazon MWAA-Repository stellt das AWS-CLI-Hilfsprogramm bereit und repliziert eine Amazon MWAA-Umgebung lokal. Weitere Informationen findest du unter aws-mwaa-local-runner auf der GitHub-Website.

  2. Füge die Python-Bibliothek und die Abhängigkeiten zu der Datei requirements.txt hinzu.
    Hinweis: Stelle nach dem Herunterladen der Plugins sicher, dass die Datei requirements.txt die Einschränkungen enthält.

  3. Verwende das folgende Skript, um die Datei requirements.txt zu testen:

    #aws-mwaa-local-runner % ./mwaa-local-env test-requirements

    Erwartetes Ergebnis:

    Installing requirements.txtCollecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))  
      Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz  
    Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))  
      Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)  
        100% |████████████████████████████████| 3.6MB 365kB/s   
    ...  
    ...  
    ...  
    Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch  
      Running setup.py install for aws-batch ... done  
    Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

Weitere Informationen findest du unter Installation von Python-Abhängigkeiten mithilfe des PyPI.org-Anforderungsdateiformats.

Die .whl-Dateien aus der Datei requirements.txt erstellen

Führe die folgenden Schritte aus:

  1. Führe für die Paketanforderungen den folgenden Befehl „local-runner“ aus:

    #aws-mwaa-local-runner % ./mwaa-local-env package-requirements

    Hinweis: Dieser Befehl lädt alle.whl-Dateien in den Ordner aws-mwaa-local-runner/plugin herunter. Nachdem du den Befehl** package-requirement ausgeführt hast,** sind die Dateien plugins.zip, das neue packaged_requirements.txt und constraints.txt im Verzeichnis requirement/ der Anwendung verfügbar.

  2. Lade die Datei plugins.zip, das neue packaged_requirements.txt und die Datei constraints.txt herunter.

  3. Ändere die neue packaged_requirements.txt so, dass sie auf die Datei /usr/local/airflow/dags/constraints.txt und nicht auf die öffentlichen Einschränkungen verweist.

Datei constraints.txt hochladen

Du kannst entweder die Datei contraints.txt in das Verzeichnis dag/ des Amazon Simple Storage Service (Amazon S3)-Buckets hochladen oder die Datei constraints.txt in die plugins-Datei aufnehmen. Wenn du die Datei contraints.txt in das Verzeichnis dag/ des Amazon S3-Buckets hochladen, ändert Amazon S3 die Datei requirements.txt für die Bereitstellung. Wenn du jedoch die Datei constraints.txt in die plugins-Datei aufnimmst, stelle sicher, dass die packaged_requirements.txt auf /usr/local/airflow/dags/constraints.txt und nicht auf die öffentlichen Einschränkungen verweist.

Wenn du die Datei constraints.txt in die Plugins hochlädst, verwende den folgenden Befehl:

#aws-mwaa-local-runner % zip -j requirements/plugins.zip constraints.txt

Eine neue Datei requirements.txt erstellen, die auf die .whl-Dateien verweist, die in der Datei plugins.zip enthalten sind

Führe die folgenden Schritte aus:

  1. Ändere die neue Datei packaged_requirements.txt. Wenn du die Datei in das Amazon S3-Verzeichnis dags hochgeladen hast, ersetze {OPTION} im folgenden Beispiel durch dags. Oder, wenn du die Datei zur Datei plugins.zip hinzugefügt hast, ersetze {OPTION} durch plugins:

    --find-links /usr/local/airflow/plugins  
    --no-index  
    --constraint "/usr/local/airflow/{OPTION}/constraints.txt"   
    ....snip.....
  2. Lade die Dateien plugins.zip und requirements.txt in den Amazon S3-Bucket des Amazon MWAA-Clusters hoch.

  3. Aktualisiere die Umgebung.

Probleme bei der Paketinstallation beheben

Verwende aws-mwaa-local-runner, um DAGs, benutzerdefinierte Plugins und Python-Abhängigkeiten zu testen. Zeige die Protokolldatei aus der Amazon MWAA Worker- oder Scheduler-Protokollgruppe an.

Wichtig: Bevor du die Pakete oder die Datei plugins.zip installierst, verwende das Amazon MWAA CLI-Hilfsprogramm, um Python-Abhängigkeiten und die Datei plugins.zip zu testen.

Ähnliche Informationen

Verwaltung von Python-Abhängigkeiten – Option zwei: Python wheels (.whl)

Plugins