Einrichten einer VPC zum Herstellen einer Verbindung mit PyPI für AWS Glue
Der Python Package Index (PyPI) ist ein Repository mit Software für die Programmiersprache Python. Dieses Thema befasst sich mit den Details, die zur Unterstützung der Verwendung von pip-installierten Paketen erforderlich sind (wie vom Sitzungsersteller mithilfe des --additional-python-modules-Flags angegeben).
Durch die Verwendung von interaktiven AWS Glue-Sitzungen mit einem Konnektor wird das VPC-Netzwerk über das für den Konnektor angegebene Subnetz verwendet. Daher sind AWS-Services und andere Netzwerkziele nur verfügbar, wenn Sie eine spezielle Konfiguration einrichten.
Zu den Lösungen für dieses Problem gehören:
Nutzung eines Internet-Gateways, das für Ihre Sitzung erreichbar ist.
Einrichten und Verwenden eines S3-Buckets mit einem PyPI/einfachen Repository, das den transitiven Abschluss der Abhängigkeiten eines Paketsatzes enthält.
Verwendung eines CodeArtifact-Repositorys, das PyPI spiegelt und an Ihre VPC angeschlossen ist.
Einrichten eines Internet-Gateways
Die technischen Aspekte werden in den NAT-Gateway-Anwendungsfällen detailliert beschrieben. Beachten Sie jedoch die folgenden Anforderungen für die Verwendung von --additional-python-modules. Insbesondere erfordert --additional-python-modules Zugriff auf pypi.org, was durch die Konfiguration Ihrer VPC bestimmt wird. Beachten Sie die folgenden Voraussetzungen:
Die Anforderung, zusätzliche Python-Module über pip install für eine Benutzersitzung zu installieren. Wenn die Sitzung einen Konnektor verwendet, kann dies Auswirkungen auf Ihre Konfiguration haben.
Wenn ein Konnektor mit
--additional-python-modulesverwendet wird, muss beim Starten der Sitzung das mit demPhysicalConnectionRequirementsdes Konnektor verknüpfte Subnetz einen Netzwerkpfad für die Verbindung zu pypi.org bereitstellen.Sie müssen feststellen, ob Ihre Konfiguration korrekt ist oder nicht.
Einrichten eines Amazon-S3-Buckets zum Hosten eines gezielten PyPI/einfachen Repositorys
In diesem Beispiel wird in Amazon S3 ein PyPI-Spiegel für eine Reihe von Paketen und deren Abhängigkeiten eingerichtet.
So richten Sie den PyPI-Spiegel für eine Reihe von Paketen ein:
# pip download all the dependencies pip download -d s3pypi --only-binary :all: plotly gglplot pip download -d s3pypi --platform manylinux_2_17_x86_64 --only-binary :all: psycopg2-binary # create and upload the pypi/simple index and wheel files to the s3 bucket s3pypi -b test-domain-name --put-root-index -v s3pypi/*
Wenn Sie bereits über ein vorhandenes Artefakt-Repository verfügen, verfügt dieses über eine Index-URL zur Verwendung durch pip, die Sie anstelle der Beispiel-URL für den Amazon-S3-Bucket wie oben angeben können.
So verwenden Sie die benutzerdefinierte Index-URL mit einigen Beispielpaketen:
%%configure { "--additional-python-modules": "psycopg2_binary==2.9.5", "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com" }
Einrichtung eines CodeArtifact-Spiegels von Pypi, der an Ihre VPC angeschlossen ist
So richten Sie einen Spiegel ein:
Erstellen Sie ein Repository in derselben Region wie das vom Konnektor verwendete Subnetz.
Wählen Sie
Public upstream repositoriesund klicken Sie aufpypi-store.Gewähren Sie Zugriff auf das Repository von der VPC für das Subnetz.
Geben Sie die richtige
--index-urlmithilfe despython-modules-installer-optionan.%%configure { "--additional-python-modules": "psycopg2_binary==2.9.5", "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com" }
Weitere Informationen finden Sie unter Verwenden von CodeArtifact aus einer VPC.