Wie installiere ich Bibliotheken in meiner Amazon MWAA-Umgebung?

Lesedauer: 6 Minute
0

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

Kurze Beschreibung

Verwenden Sie die Dateien requirements.txt und plugins.zip, um Python-Bibliotheken in Amazon MWAA zu installieren. Wenn Sie die Datei requirements.txt verwenden, um Pakete zu installieren, werden die Pakete standardmäßig aus dem Python-Paketindex (von der PyPI-Website) installiert. Wenn Sie Bibliotheken (.whl-Dateien) mit kompilierten Artefakten ausliefern, verwenden Sie die Datei plugins.zip, um diese Python-Wheels zu installieren.

Für die Amazon MWAA-Versionen 2.2.2 und 2.4.3 ist ausgehender Internetzugang auf der privaten Webserver-Option nicht verfügbar. Amazon MWAA installiert die Anforderungen und Plug-ins auf dem Webserver in der virtuellen privaten Cloud (VPC) des Amazon MWAA-Service. Zu diesen Anforderungen gehört ein NAT-Gateway mit ausgehendem Internetzugang. Für frühere Amazon MWAA-Versionen (2.0.2 und 1.10.12) sind die Anforderungen und Plug-ins jedoch nicht standardmäßig auf dem Webserver installiert.

Für die Amazon MWAA-Versionen 2.2.2 und 2.4.3 bietet der Amazon MWAA Local Runner ein Befehlszeilenprogramm zum Herunterladen und Verpacken von Python-Abhängigkeiten (.whl) und Anforderungen in der Datei plugins.zip.

Für alle Versionen von Amazon MWAA können Sie die Datei plugins.zip verwenden, um benutzerdefinierte Apache Airflow-Operationen, Hooks, Sensoren oder Schnittstellen zu installieren. Plugins exportieren Umgebungsvariablen, Authentifizierungs- und Konfigurationsdateien wie.crt und .yaml.

Auflösung

Installieren Sie Bibliotheken mithilfe von .whl in Umgebungen mit einem privaten Webserver (Amazon MWAA-Versionen 2.2.2 und 2.4.3)

**Richten Sie Ihre lokale Amazon MWAA-Umgebung ein **

1.Erstellen Sie das Docker-Image und richten Sie eine lokale Amazon MWAA-Umgebung ein (von der GitHub-Website). Das MWAA-Repository bietet ein Befehlszeilenschnittstellen-Hilfsprogramm (CLI), das eine Amazon MWAA-Umgebung lokal repliziert.

2.Fügen Sie die Python-Bibliothek und die Abhängigkeiten zu einer Datei requirements.txt hinzu.

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

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

Die Ausgabe sieht ähnlich wie die folgende aus:

 Installing requirements.txt
Collecting 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

Erstellen Sie die .whl-Dateien aus der Datei requirements.txt

Führen Sie den folgenden Befehl mit package-requirements local-runner aus, um die .whl-Dateien aus der Datei requirements.txt zu erstellen:

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

Der Befehl lädt alle.whl-Dateien in den Ordner: aws-mwaa-local-runner/plugin herunter.

Erstellen Sie eine Datei plugins.zip mit .whl-Dateien und einer Amazon MWAA-Einschränkung

Laden Sie die Datei constraints.txt herunter und kopieren in das Verzeichnis des Plugins. Führen Sie dann den folgenden Befehl aus, um die Datei plugins.zip zu erstellen:

#aws-mwaa-local-runner % curl -o plugins/constraints.txt "https://raw.githubusercontent.com/apache/airflow/constraints-2.2.2/constraints-3.7.txt"
#aws-mwaa-local-runner % zip -j dags/plugins.zip plugins/constraints.txt

Erstellen Sie eine neue Datei requirements.txt, die auf die .whl-Dateien verweist, die in der Datei plugins.zip enthalten sind

1. Erstellen Sie die neue Datei requirements.txt. Verwenden Sie in einem Textwerkzeug Ihrer Wahl ein Format, das dem folgenden ähnelt:

=========new requirements.txt==========

--find-links /usr/local/airflow/plugins

--no-index

--constraint “/usr/local/airflow/plugins/constraints.txt”

aws-batch==0.6
====================================

2. Laden Sie die Dateien plugins.zip und requirements.txt in den Amazon Simple Storage Service (Amazon S3) -Bucket Ihres MWAA-Clusters hoch. Aktualisieren Sie dann die Umgebung.

Verwenden Sie Python-Räder, um benutzerdefinierte Bibliotheken zu installieren

Ein Python-Wheel ist eine Paketdatei mit kompilierten Artefakten. Um dieses Paket zu installieren, platzieren Sie die .whl-Datei in einer Datei plugins.zip. Verweisen Sie dann in einer Datei requirements.txt auf diese Datei. Nachdem Sie die .whl-Datei zur Datei plugins.zip hinzugefügt haben, aktualisieren Sie die Umgebung. Die .whl-Datei wird an den Speicherort des Fargate-Containers von Amazon Elastic Container Service (Amazon ECS) gesendet: /usr/local/airflow/plugins/.

Installieren Sie Python-Räder

1.Erstellen Sie die Datei plugins.zip. Führen Sie den folgenden Befehl aus, um ein lokales Amazon MWAA-Plugin-Verzeichnis auf Ihrem System zu erstellen:

$ mkdir plugins

2.Kopieren Sie die .whl-Datei in das Plugins-Verzeichnis, das Sie erstellt haben. Führen Sie den folgenden Befehl aus, um das Verzeichnis so zu ändern, dass es auf Ihr lokales Airflow-Plugin-Verzeichnis verweist:

$ cd plugins

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Inhalt über ausführbare Berechtigungen verfügt:

plugins$ chmod -R 755

Führe den folgenden Befehl aus, um den Inhalt in deinem Plugin-Ordner zu komprimieren:

plugins$ zip -r plugins.zip .

3.Fügen Sie den Pfad der .whl-Datei in die Datei requirements.txt ein (z. B. /usr/local/airflow/plugins/example\ _wheel.whl).

Hinweis: Stellen Sie sicher, dass Sie die Versionierung für Ihren Amazon S3-Bucket aktivieren.

4.Laden Sie die Dateien plugins.zip und requirements.txt in einen Amazon S3-Bucket hoch (z. B. s3://example-bucket/plugins.zip).

5.Geben Sie die Version plugins.zip auf der Amazon MWAA-Konsole an.

Installieren Sie benutzerdefinierte Operatoren, Hooks, Sensoren oder Schnittstellen

Amazon MWAA unterstützt den integrierten Plugin-Manager von Apache Airflow. Mit dem Plugin-Manager können Sie benutzerdefinierte Apache Airflow-Operatoren, Hook-Sensoren oder Schnittstellen verwenden. Diese benutzerdefinierten Plugins werden in der Datei plugins.zip mit entweder einer flachen und einer verschachtelten Verzeichnisstruktur abgelegt. Der Inhalt der Datei plugins.zip wird in die Amazon ECS Fargate-Container im Backend unter geschrieben: /usr/local/airflow/plugins/. Weitere Informationen finden Sie unter Beispiele für benutzerdefinierte Plugins.

Erstellen Sie ein benutzerdefiniertes Plugin, um Laufzeitumgebungsvariablen zu generieren

Erstellen Sie ein benutzerdefiniertes Plugin, das Laufzeitumgebungsvariablen in Ihrer Amazon MWAA-Umgebung generiert. Verwenden Sie dann diese Umgebungsvariablen in Ihrem DAG-Code (Directed Acyclic Graph). Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Plug-ins, das Laufzeitumgebungsvariablen generiert.

Exportieren Sie PEM-, .crt- und Konfigurationsdateien (.yaml)

Wenn Sie bestimmte Dateien nicht kontinuierlich aktualisieren müssen, während Ihre Umgebung läuft, verwenden Sie die Datei plugins.zip, um die Dateien zu verteilen. Sie können auch DAGs erstellen und die Datei plugins.zip für Dateien verwenden, für die kein Benutzerzugriff erforderlich ist (z. B. Zertifikat-, PEM- und YAML-Konfigurationsdateien).

Der folgende Beispielbefehl bündelt eine ca-certificates.crt-Datei in einer Datei plugins.zip:

$ zip plugins.zip ca-certificates.crt

Nachdem Sie die Umgebung mit dieser Datei plugins.zip aktualisiert haben, wird die CRT-Datei auf dem Pfad /usr/local/airflow/plugins/ca-certificates.crt auf jedem der Worker-Container synchronisiert. Dann greifen Ihre DAGs auf diese Datei zu. Gehen Sie für andere Dateitypen genauso vor.

Installieren Sie benutzerdefinierte Plugins und Binärdateien

Sie können Oracle für Amazon MWAA verwenden, um ein benutzerdefiniertes Plugin zu erstellen und es mit anderen benutzerdefinierten Plugins und Binärdateien in Ihrer Datei plugins.zip zu kombinieren. Dies schließt Pakete ein, die nichts mit Python zu tun haben. Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Plug-ins mit Oracle.

Informationen zum Hinzufügen von Binärdateien zu Ihren Containern oder zum Festlegen und Ändern von Umgebungsvariablen finden Sie unter Erstellen eines benutzerdefinierten Plugins mit Apache Hive und Hadoop.

Probleme bei der Paketinstallation beheben

Verwenden Sie aws-mwaa-local-runner (von der GitHub-Website), um DAGs, benutzerdefinierte Plugins und Python-Abhängigkeiten zu testen.

Sehen Sie sich die Protokolldatei an. Sie können die Datei in den Protokollgruppen Apache Airflow Worker oder Scheduler einsehen.

Wichtig: Bevor Sie die Pakete oder die Datei plugins.zip installieren, empfiehlt es sich, das Amazon MWAA CLI-Hilfsprogramm zu verwenden, um Python-Abhängigkeiten und die Datei plugins.zip zu testen.

Verwandte Informationen

Plugins

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr