

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-Bibliotheken mit AWS Glue verwenden
<a name="aws-glue-programming-python-libraries"></a>

 Sie können zusätzliche Python-Module und -Bibliotheken für die Verwendung mit AWS Glue ETL installieren. Für AWS Glue 2.0 und höher verwendet AWS Glue den Python Package Installer (pip3), um zusätzliche Module zu installieren, die von AWS Glue ETL verwendet werden. AWS Glue bietet mehrere Optionen, um die zusätzlichen Python-Module in Ihre AWS Glue-Jobumgebung zu integrieren. Sie können den `--additional-python-modules` Parameter verwenden, um neue Module mithilfe von ZIP-Dateien einzubinden, die gebündelte Python-Räder (auch bekannt als „Zip of Wheels“, verfügbar für AWS Glue 5.0 und höher), einzelne Python-Raddateien, Anforderungsdateien (requirements.txt, verfügbar für AWS Glue 5.0 und höher) oder eine Liste von durch Kommas getrennten Python-Modulen enthalten. Es könnte auch verwendet werden, um die Version der Python-Module zu ändern, die in der AWS Glue-Umgebung bereitgestellt werden ([Python-Module sind bereits in AWS Glue enthalten](#glue-modules-provided)weitere Informationen finden Sie unter). 

**Topics**
+ [Installation zusätzlicher Python-Module mit Pip in AWS Glue 2.0 oder höher](#addl-python-modules-support)
+ [Einschließlich Python-Dateien mit PySpark nativen Funktionen](#extra-py-files-support)
+ [Programmierskripte, die visuelle Transformationen verwenden](#aws-glue-programming-with-cvt)
+ [Komprimieren von Bibliotheken für die Integration](#aws-glue-programming-python-libraries-zipping)
+ [Python-Bibliotheken in AWS Glue Studio-Notebooks laden](#aws-glue-programming-python-libraries-notebooks)
+ [Laden von Python-Bibliotheken in einen Entwicklungsendpunkt in AWS Glue 0.9/1.0](#aws-glue-programming-python-libraries-dev-endpoint)
+ [Python-Bibliotheken in einem Job verwenden oder JobRun](#aws-glue-programming-python-libraries-job)
+ [Proaktives Analysieren von Python-Abhängigkeiten](#aws-glue-programming-analyzing-python-dependencies)
+ [Python-Module sind bereits in AWS Glue enthalten](#glue-modules-provided)
+ [Anhang A: Ein Zip of Wheels-Artefakt erstellen](#glue-python-library-zip-of-wheels-appendix)
+ [Anhang B: Details zur AWS Glue-Umgebung](#glue-python-libraries-environment-details)

## Installation zusätzlicher Python-Module mit Pip in AWS Glue 2.0 oder höher
<a name="addl-python-modules-support"></a>

AWS Glue verwendet den Python Package Installer (pip3), um zusätzliche Module zu installieren, die von AWS Glue ETL verwendet werden sollen. Sie können den Parameter „`--additional-python-modules`“ mit verschiedenen kommagetrennten Python-Modulen verwenden, um ein neues Modul hinzuzufügen oder die Version eines vorhandenen Moduls zu ändern. Sie können gebaute Radartefakte entweder über eine Zip-Datei mit Rädern oder ein eigenständiges Radartefakt installieren, indem Sie die Datei auf Amazon S3 hochladen und dann den Pfad zum Amazon S3 S3-Objekt in Ihre Modulliste aufnehmen. Weitere Informationen zum Einstellen von Job-Parametern finden Sie unter [Job-Parameter in AWS Glue-Jobs verwenden](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html).

 Sie können zusätzliche Optionen an pip3 übergeben mit dem Parameter `--python-modules-installer-option`. Sie könnten beispielsweise an force pip `--only-binary` übergeben, nur vorgefertigte Artefakte für die von angegebenen Pakete zu installieren. `--additional-python-modules` Weitere Beispiele finden Sie unter [Python-Module aus einem Rad für Spark-ETL-Workloads mit AWS Glue 2.0 erstellen](https://aws.amazon.com/blogs/big-data/building-python-modules-from-a-wheel-for-spark-etl-workloads-using-aws-glue-2-0/). 

### Bewährte Methoden für das Python-Abhängigkeitsmanagement
<a name="glue-python-library-best-practices"></a>

Für Produktionsworkloads empfiehlt AWS Glue, all Ihre Python-Abhängigkeiten als Raddateien in einem einzigen ZIP-Artefakt zu verpacken. Dieser Ansatz bietet:
+ **Deterministische Ausführung**: Exakte Kontrolle darüber, welche Paketversionen installiert werden
+ **Zuverlässigkeit**: Keine Abhängigkeit von externen Paket-Repositorys während der Jobausführung
+ **Leistung**: Einzelner Download-Vorgang statt mehrerer Netzwerkaufrufe
+ **Offline-Installation**: Funktioniert in privaten VPC-Umgebungen ohne Internetzugang

#### Wichtige Überlegungen
<a name="glue-python-library-important-considerations"></a>

Im Rahmen des [Modells der AWS gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) sind Sie für die Verwaltung zusätzlicher Python-Module, -Bibliotheken und deren Abhängigkeiten verantwortlich. Dies umfasst:
+ **Sicherheitsupdates**: Regelmäßige Aktualisierung von Paketen zur Behebung von Sicherheitslücken
+ **Versionskompatibilität**: Stellen Sie sicher, dass Pakete mit Ihrer AWS Glue-Version kompatibel sind
+ **Testen**: Überprüfen, ob Ihre verpackten Abhängigkeiten in der Glue-Umgebung korrekt funktionieren

Wenn Sie nur minimale Abhängigkeiten haben, können Sie erwägen, stattdessen einzelne Raddateien zu verwenden.

### (Empfohlen) Installation zusätzlicher Python-Bibliotheken in AWS Glue 5.0 oder höher mit Zip of Wheels
<a name="glue-python-library-installing-zip-of-wheels"></a>

AWS Glue 5.0 und höher unterstützt das Verpacken mehrerer Raddateien in einem einzigen ZIP-Artefakt, das gebündelte Python-Räder enthält, um ein zuverlässigeres und deterministischeres Abhängigkeitsmanagement zu gewährleisten. Um diesen Ansatz zu verwenden, erstellen Sie eine ZIP-Datei, die all Ihre Radabhängigkeiten und ihre transitiven Abhängigkeiten mit dem `.gluewheels.zip` Suffix enthält, laden Sie sie auf Amazon S3 hoch und referenzieren Sie sie mit dem `--additional-python-modules` Parameter. Achten Sie darauf, den `--no-index` `--python-modules-installer-option` Job-Parameter zu ergänzen. Bei dieser Konfiguration fungiert die Zip-Datei der Wheels-Datei im Wesentlichen als lokaler Index, aus dem Pip zur Laufzeit Abhängigkeiten auflöst. Dadurch werden Abhängigkeiten von externen Paket-Repositorys wie PyPI während der Jobausführung beseitigt, was für mehr Stabilität und Konsistenz für Produktionsworkloads sorgt. Beispiel: 

```
--additional-python-modules s3://amzn-s3-demo-bucket/path/to/zip-of-wheels-1.0.0.gluewheels.zip
--python-modules-installer-option --no-index
```

Anweisungen zum Erstellen einer ZIP-Datei mit Rädern finden Sie unter. [Anhang A: Ein Zip of Wheels-Artefakt erstellen](#glue-python-library-zip-of-wheels-appendix)

### Installieren zusätzlicher Python-Bibliotheken mit Wheel
<a name="glue-python-library-installing-wheel"></a>

AWS Glue unterstützt die Installation benutzerdefinierter Python-Pakete mithilfe von Wheel- (.whl) -Dateien, die in Amazon S3 gespeichert sind. Um Raddateien in Ihre AWS Glue-Jobs aufzunehmen, geben Sie dem `--additional-python-modules` Job-Parameter eine kommagetrennte Liste Ihrer in s3 gespeicherten Raddateien an. Beispiel: 

```
--additional-python-modules s3://amzn-s3-demo-bucket/path/to/package-1.0.0-py3-none-any.whl,s3://your-bucket/path/to/another-package-2.1.0-cp311-cp311-linux_x86_64.whl
```

Dieser Ansatz unterstützt auch, wenn Sie benutzerdefinierte Distributionen oder Pakete mit nativen Abhängigkeiten benötigen, die für das richtige Betriebssystem vorkompiliert sind. Weitere Beispiele finden Sie unter [Python-Module aus einem Rad für Spark-ETL-Workloads mit AWS Glue 2.0 erstellen](https://aws.amazon.com/blogs/big-data/building-python-modules-from-a-wheel-for-spark-etl-workloads-using-aws-glue-2-0/). 

### Installation zusätzlicher Python-Bibliotheken in AWS Glue 5.0 oder höher mit requirements.txt
<a name="addl-python-modules-requirements-txt"></a>

In AWS Glue 5.0\$1 können Sie den Defacto-Standard zur Verwaltung von `requirements.txt` Python-Bibliotheksabhängigkeiten bereitstellen. Geben Sie dazu die folgenden zwei Auftragsparameter an:
+ Schlüssel: `--python-modules-installer-option`

  Wert: `-r`
+ Schlüssel: `--additional-python-modules`

  Wert: `s3://path_to_requirements.txt`

AWS Glue 5.0-Knoten laden zunächst die in angegebenen Python-Bibliotheken`requirements.txt`.

Hier ist ein Beispiel für requirements.txt:

```
awswrangler==3.9.1
elasticsearch==8.15.1
PyAthena==3.9.0
PyMySQL==1.1.1
PyYAML==6.0.2
pyodbc==5.2.0
pyorc==0.9.0
redshift-connector==2.1.3
scipy==1.14.1
scikit-learn==1.5.2
SQLAlchemy==2.0.36
```

**Wichtig**  
Verwenden Sie diese Option mit Vorsicht, insbesondere bei Produktionsworkloads. Das Abrufen von Abhängigkeiten von PyPI zur Laufzeit ist sehr riskant, da Sie nicht sicher sein können, zu welchem Artefakt Pip aufgelöst wird. Die Verwendung nicht angehefteter Bibliotheksversionen ist besonders riskant, da dabei die neueste Version der Python-Module abgerufen wird, was zu grundlegenden Änderungen oder inkompatiblen Python-Modulen führen kann. Dies könnte zu einem Jobfehler aufgrund eines Fehlers bei der Python-Installation in der AWS Glue-Jobumgebung führen. Das Fixieren der Bibliotheksversion erhöht zwar die Stabilität, aber die Pip-Auflösung ist immer noch nicht vollständig deterministisch, sodass ähnliche Probleme auftreten können. Als bewährte Methode empfiehlt AWS Glue, eingefrorene Artefakte wie Zip-Dateien von Rädern oder einzelne Raddateien zu verwenden ([(Empfohlen) Installation zusätzlicher Python-Bibliotheken in AWS Glue 5.0 oder höher mit Zip of Wheels](#glue-python-library-installing-zip-of-wheels)weitere Informationen finden Sie unter). 

**Wichtig**  
Wenn Sie die Versionen Ihrer transitiven Abhängigkeiten nicht fixieren, kann es sein, dass eine primäre Abhängigkeit inkompatible transitive Abhängigkeitsversionen abruft. Als bewährte Methode sollten alle Bibliotheksversionen angeheftet werden, um die Konsistenz der AWS Glue-Jobs zu erhöhen. Noch besser: AWS Glue empfiehlt, Ihre Abhängigkeiten in einer Zip-Datei mit Rädern zu verpacken, um maximale Konsistenz und Zuverlässigkeit für Ihre Produktionsworkloads zu gewährleisten. 

### Installieren zusätzlicher Python-Bibliotheken durch direkte Konfiguration als durch Kommas getrennte Liste
<a name="glue-python-library-installing-comma-separated-list"></a>

Um ein neues Python-Modul zu aktualisieren oder hinzuzufügen, ermöglicht AWS Glue die Übergabe von `--additional-python-modules` Parametern mit einer Liste von durch Kommas getrennten Python-Modulen als Werte. Verwenden Sie beispielsweise zur Aktualisierung/zum Hinzufügen eines scikit-learn-Moduls den folgenden Schlüssel/Wert: `"--additional-python-modules", "scikit-learn==0.21.3"`. Sie haben zwei Möglichkeiten, die Python-Module direkt zu konfigurieren.
+ **Angeheftetes Python-Modul**

  `"--additional-python-modules", "scikit-learn==0.21.3,ephem==4.1.6"`
+ **Nicht angeheftetes Python-Modul: (Nicht für Produktions-Workloads empfohlen)**

  `"--additional-python-modules", "scikit-learn>==0.20.0,ephem>=4.0.0"`

  ODER

  `"--additional-python-modules", "scikit-learn,ephem"`

**Wichtig**  
Verwenden Sie diese Option mit Vorsicht, insbesondere bei Produktionsworkloads. Das Abrufen von Abhängigkeiten von PyPI zur Laufzeit ist sehr riskant, da Sie nicht sicher sein können, zu welchem Artefakt Pip aufgelöst wird. Die Verwendung nicht angehefteter Bibliotheksversionen ist besonders riskant, da dabei die neueste Version der Python-Module abgerufen wird, was zu grundlegenden Änderungen oder inkompatiblen Python-Modulen führen kann. Dies könnte zu einem Jobfehler aufgrund eines Fehlers bei der Python-Installation in der AWS Glue-Jobumgebung führen. Das Fixieren der Bibliotheksversion erhöht zwar die Stabilität, aber die Pip-Auflösung ist immer noch nicht vollständig deterministisch, sodass ähnliche Probleme auftreten können. Als bewährte Methode empfiehlt AWS Glue, eingefrorene Artefakte wie Zip-Dateien von Rädern oder einzelne Raddateien zu verwenden ([(Empfohlen) Installation zusätzlicher Python-Bibliotheken in AWS Glue 5.0 oder höher mit Zip of Wheels](#glue-python-library-installing-zip-of-wheels)weitere Informationen finden Sie unter).

**Wichtig**  
Wenn Sie die Versionen Ihrer transitiven Abhängigkeiten nicht fixieren, kann es sein, dass eine primäre Abhängigkeit inkompatible transitive Abhängigkeitsversionen abruft. Als bewährte Methode sollten alle Bibliotheksversionen angeheftet werden, um die Konsistenz der AWS Glue-Jobs zu erhöhen. Noch besser: AWS Glue empfiehlt, Ihre Abhängigkeiten in einer Zip-Datei mit Rädern zu verpacken, um maximale Konsistenz und Zuverlässigkeit für Ihre Produktionsworkloads zu gewährleisten. 

## Einschließlich Python-Dateien mit PySpark nativen Funktionen
<a name="extra-py-files-support"></a>

AWS Glue verwendet PySpark , um Python-Dateien in AWS Glue ETL-Jobs einzubeziehen. Sie sollten `--additional-python-modules` verwenden, um Ihre Abhängigkeiten zu verwalten (sofern verfügbar). Sie können den Auftragsparameter `--extra-py-files` verwenden, um Python-Dateien hinzuzufügen. Abhängigkeiten müssen in Amazon S3 gehostet werden und der Argumentwert sollte eine kommagetrennte Liste von Amazon S3-Pfaden ohne Leerzeichen sein. Diese Funktion verhält sich wie das Python-Abhängigkeitsmanagement, das Sie mit Spark verwenden würden´. Weitere Informationen zur Python-Abhängigkeitsverwaltung in Spark finden Sie auf der Seite [ PySpark Using Native Features](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-pyspark-native-features) in der Apache Spark-Dokumentation. `--extra-py-files`ist nützlich in Fällen, in denen Ihr zusätzlicher Code nicht gepackt ist oder wenn Sie ein Spark-Programm mit einer vorhandenen Toolchain zur Verwaltung von Abhängigkeiten migrieren. Damit Ihre Abhängigkeitstools wartbar sind, müssen Sie Ihre Abhängigkeiten bündeln, bevor Sie sie einreichen. 

## Programmierskripte, die visuelle Transformationen verwenden
<a name="aws-glue-programming-with-cvt"></a>

 Wenn Sie einen AWS Glue-Job mit der visuellen Oberfläche von AWS Glue Studio erstellen, können Sie Ihre Daten mit verwalteten Datentransformationsknoten und benutzerdefinierten visuellen Transformationen transformieren. Weitere Informationen zu verwalteten Datentransformationsknoten finden Sie unter [Transformieren von Daten mit von AWS Glue verwalteten Transformationen](edit-jobs-transforms.md). Weitere Informationen zu benutzerdefinierten visuellen Transformationen finden Sie unter [Transformieren von Daten mit benutzerdefinierten visuellen Transformationen](custom-visual-transform.md). Skripte, die visuelle Transformationen verwenden, können nur generiert werden, wenn die **Sprache** Ihres Auftrags auf die Verwendung von Python eingestellt ist.

 Wenn ein AWS Glue-Job mithilfe von visuellen Transformationen generiert wird, AWS bezieht Glue Studio diese Transformationen mithilfe des `--extra-py-files` Parameters in der Auftragskonfiguration in die Laufzeitumgebung ein. Informationen zu Auftragsparametern finden Sie unter [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md). Wenn Sie Änderungen an einem generierten Skript oder einer generierten Laufzeitumgebung vornehmen, müssen Sie diese Auftragskonfiguration beibehalten, damit Ihr Skript erfolgreich ausgeführt werden kann.

## Komprimieren von Bibliotheken für die Integration
<a name="aws-glue-programming-python-libraries-zipping"></a>

Sofern eine Bibliothek nicht in einer einzigen `.py`-Datei enthalten ist, sollte sie in ein `.zip`-Archiv gepackt werden. Das Paketverzeichnis sollte sich im Stammverzeichnis des Archivs befinden und eine `__init__.py`-Datei für das Paket enthalten. Python ist dann in der Lage, das Paket wie gewohnt zu importieren.

Wenn Ihre Bibliothek nur aus einem einzigen Python-Modul in einer `.py`-Datei besteht, brauchen Sie sie nicht in einer `.zip`-Datei abzulegen.

## Python-Bibliotheken in AWS Glue Studio-Notebooks laden
<a name="aws-glue-programming-python-libraries-notebooks"></a>

 Informationen zur Angabe von Python-Bibliotheken in AWS Glue Studio-Notebooks finden Sie unter [Zusätzliche Python-Module installieren.](https://docs.aws.amazon.com/glue/latest/dg/manage-notebook-sessions.html#specify-default-modules) 

## Laden von Python-Bibliotheken in einen Entwicklungsendpunkt in AWS Glue 0.9/1.0
<a name="aws-glue-programming-python-libraries-dev-endpoint"></a>

Wenn Sie verschiedene Bibliotheks-Sets für verschiedene ETL-Skripts verwenden, können Sie entweder für jeden Satz einen eigenen Entwicklungsendpunkt einrichten oder die `.zip`-Bibliotheksdatei(en) überschreiben, die Ihr Entwicklungsendpunkt bei jedem Wechsel des Skripts lädt.

Sie können die Konsole verwenden, um eine oder mehrere Library.zip-Dateien für einen Entwicklungsendpunkt anzugeben, wenn Sie diesen erstellen. Nachdem Sie einen Namen und eine IAM-Rolle zugewiesen haben, wählen Sie **Script Libraries and job parameters (optional) (Skript-Bibliotheken und Auftragsparameter (optional))** aus und geben Sie den vollständigen Amazon-S3-Pfad zu Ihrer `.zip`-Bibliotheksdatei im Feld **Python library path (Python-Bibliothekspfad)** ein. Zum Beispiel:

```
s3://bucket/prefix/site-packages.zip
```

Wenn Sie möchten, können Sie mehrere vollständige Pfade zu Dateien angeben und diese mit Kommas, aber ohne Leerzeichen trennen:

```
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
```

Wenn Sie diese `.zip`-Dateien später aktualisieren, können Sie sie über die Konsole erneut in Ihren Entwicklungsendpunkt importieren. Navigieren Sie zu dem betreffenden Entwicklerendpunkt, markieren Sie das Kästchen daneben und wählen Sie **Update ETL libraries** (ETL-Bibliotheken aktualisieren) aus dem Menü **Action** (Aktion) aus.

Auf ähnliche Weise können Sie Bibliotheksdateien mit dem AWS Glue angeben APIs. Wenn Sie einen Entwicklungsendpunkt durch den Aufruf von[CreateDevEndpoint Aktion (Python: create\$1dev\$1endpoint)](aws-glue-api-dev-endpoint.md#aws-glue-api-dev-endpoint-CreateDevEndpoint) erstellen, können Sie einen oder mehrere vollständige Pfade zu Bibliotheken im `ExtraPythonLibsS3Path`-Parameter angeben, und zwar in einem Aufruf, der so aussieht:

```
dep = glue.create_dev_endpoint(
             EndpointName="testDevEndpoint",
             RoleArn="arn:aws:iam::123456789012",
             SecurityGroupIds="sg-7f5ad1ff",
             SubnetId="subnet-c12fdba4",
             PublicKey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtp04H/y...",
             NumberOfNodes=3,
             ExtraPythonLibsS3Path="s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip")
```

Wenn Sie einen Entwicklungsendpunkt aktualisieren, können Sie auch die geladene Bibliotheken aktualisieren, indem Sie ein [DevEndpointCustomLibraries](aws-glue-api-dev-endpoint.md#aws-glue-api-dev-endpoint-DevEndpointCustomLibraries)-Objekt verwenden und den `UpdateEtlLibraries `-Parameter beim Aufruf von [UpdateDevEndpoint (update\$1dev\$1endpoint)](aws-glue-api-dev-endpoint.md#aws-glue-api-dev-endpoint-UpdateDevEndpoint) auf `True` festlegen.

## Python-Bibliotheken in einem Job verwenden oder JobRun
<a name="aws-glue-programming-python-libraries-job"></a>

Wenn Sie einen neuen Auftrag in der Konsole erstellen, können Sie eine oder mehrere Library.zip-Dateien angeben, indem Sie **Script Libraries and job parameters (optional) (Skript-Bibliotheken und Auftragsparameter (optional))** auswählen und den vollständigen Amazon-S3-Bibliothekspfad wie beim Erstellen eines Entwicklungsendpunkts eingeben:

```
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
```

Wenn Sie die Funktion [CreateJob (Job erstellen)](aws-glue-api-jobs-job.md#aws-glue-api-jobs-job-CreateJob) aufrufen, können Sie einen oder mehrere vollständige Pfade zu Standardbibliotheken angeben, indem Sie den `--extra-py-files`-Standardparameter verwenden:

```
job = glue.create_job(Name='sampleJob',
                      Role='Glue_DefaultRole',
                      Command={'Name': 'glueetl',
                               'ScriptLocation': 's3://my_script_bucket/scripts/my_etl_script.py'},
                      DefaultArguments={'--extra-py-files': 's3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip'})
```

Wenn Sie dann eine starten JobRun, können Sie die Standardeinstellung der Bibliothek durch eine andere überschreiben:

```
runId = glue.start_job_run(JobName='sampleJob',
                           Arguments={'--extra-py-files': 's3://bucket/prefix/lib_B.zip'})
```

## Proaktives Analysieren von Python-Abhängigkeiten
<a name="aws-glue-programming-analyzing-python-dependencies"></a>

 Um potenzielle Abhängigkeitsprobleme vor der Bereitstellung in AWS Glue proaktiv zu identifizieren, können Sie das Abhängigkeitsanalyse-Tool verwenden, um Ihre Python-Pakete anhand Ihrer AWS Glue-Zielumgebung zu validieren. 

 AWS bietet ein Open-Source-Python-Abhängigkeitsanalyse-Tool, das speziell für AWS Glue-Umgebungen entwickelt wurde. Dieses Tool ist im AWS Glue-Beispiel-Repository verfügbar und kann lokal verwendet werden, um Ihre Abhängigkeiten vor der Bereitstellung zu überprüfen. 

 Mithilfe dieser Analyse können Sie sicherstellen, dass Ihre Abhängigkeiten der empfohlenen Vorgehensweise folgen, alle Bibliotheksversionen für konsistente Produktionsbereitstellungen anzuheften. Weitere Informationen finden Sie in der [README-Datei](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/glue_python_dependency_analyzer) des Tools. 

### Verwenden des AWS Glue Dependency Analyzer
<a name="w2aac67c11c14c18c37c11b1"></a>

 Der AWS Glue Python Dependency Analyzer hilft dabei, unverankerte Abhängigkeiten und Versionskonflikte zu identifizieren, indem er die Pip-Installation mit plattformspezifischen Einschränkungen simuliert, die zu Ihrer Glue-Zielumgebung passen. AWS 

```
# Analyze a single Glue job
python glue_dependency_analyzer.py -j my-glue-job

# Analyze multiple jobs with specific AWS configuration
python glue_dependency_analyzer.py -j job1 -j job2 --aws-profile production --aws-region us-west-2
```

 Das Tool kennzeichnet Folgendes: 
+  Nicht angeheftete Abhängigkeiten, die bei verschiedenen Auftragsausführungen unterschiedliche Versionen installieren könnten 
+  Versionskonflikte zwischen Paketen 
+  Abhängigkeiten sind für Ihre AWS Glue-Zielumgebung nicht verfügbar 

## Analysieren und Beheben von Auftragsfehlern aufgrund von Python-Abhängigkeiten mit Amazon Q Developer
<a name="aws-glue-programming-analyze-job-failures-with-amazon-q"></a>

 Amazon Q Developer ist ein auf generativer künstlicher Intelligenz (KI) basierender Konversationsassistent, der Ihnen helfen kann, AWS Anwendungen zu verstehen, zu erstellen, zu erweitern und zu betreiben. Sie können ihn herunterladen, indem Sie den Anweisungen im Handbuch „Erste Schritte“ für Amazon Q folgen. 

 Amazon Q Developer kann zum Analysieren und Beheben von Auftragsfehlern aufgrund von Python-Abhängigkeit verwendet werden. Wir empfehlen die Verwendung des folgenden Prompts, indem Sie den Platzhalter <Job-Name> durch den Namen Ihres Glue-Jobs ersetzen. 

```
I have an AWS Glue job named <Job-Name> that has failed due to Python module installation conflicts. Please assist in diagnosing and resolving this issue using the following systematic approach. Proceed once sufficient information is available.

Objective: Implement a fix that addresses the root cause module while minimizing disruption to the existing working environment.

Step 1: Root Cause Analysis
• Retrieve the most recent failed job run ID for the specified Glue job
• Extract error logs from CloudWatch Logs using the job run ID as a log stream prefix
• Analyze the logs to identify:
  • The recently added or modified Python module that triggered the dependency conflict
  • The specific dependency chain causing the installation failure
  • Version compatibility conflicts between required and existing modules

Step 2: Baseline Configuration Identification
• Locate the last successful job run ID prior to the dependency failure
• Document the Python module versions that were functioning correctly in that baseline run
• Establish the compatible version constraints for conflicting dependencies

Step 3: Targeted Resolution Implementation
• Apply pinning by updating the job's additional_python_modules parameter
• Pin only the root cause module and its directly conflicting dependencies to compatible versions, and do not remove python modules unless necessary
• Preserve flexibility for non-conflicting modules by avoiding unnecessary version constraints
• Deploy the configuration changes with minimal changes to the existing configuration and execute a validation test run. Do not change the Glue versions.

Implementation Example:
Scenario: Recently added pandas==2.0.0 to additional_python_modules
Error: numpy version conflict (pandas 2.0.0 requires numpy>=1.21, but existing job code requires numpy<1.20)
Resolution: Update additional_python_modules to "pandas==1.5.3,numpy==1.19.5"
Rationale: Use pandas 1.5.3 (compatible with numpy 1.19.5) and pin numpy to last known working version

Expected Outcome: Restore job functionality with minimal configuration changes while maintaining system stability.
```

 Der Prompt weist Q zu Folgendem an: 

1. Abrufen der ID der letzten fehlerhaften Auftragsausführung

1. Finden zugehöriger Protokolle und Details

1. Finden erfolgreicher Auftragsausführungen, um geänderte Python-Pakete zu erkennen

1. Vornehmen aller Konfigurationskorrekturen und Auslösen eines weiteren Testlaufs

## Python-Module sind bereits in AWS Glue enthalten
<a name="glue-modules-provided"></a>

Um die Version dieser bereitgestellten Module zu ändern, stellen Sie neue Versionen mit dem Auftragsparameter `--additional-python-modules` bereit.

------
#### [ AWS Glue version 5.1 ]

AWS Glue Version 5.1 enthält standardmäßig die folgenden Python-Module:
+ aiobotocore==2.25.1
+ Aio Happy Eyeballs == 2.6.1
+ aiohttp==3.13.2
+ aioiter-Werkzeuge==0.12.0
+ AIO-Signal==1.4.0
+ appdirs==1.4.4
+ Attrs==25.4.0
+ Boto3==1.40.61
+ Botocore==1.40.61
+ Zertifikat == 2025.10.5
+ Zeichensatz-Normalisierer==3.4.4
+ Choreograf ==1.2.0
+ Kontur==1.3.3
+ cycler==0.12.1
+ distlib==0.4.0
+ Dateisperre ==3.20.0
+ Schriftwerkzeuge==4.60.1
+ eingefrorene Liste==1.8.0
+ fsspec==2025.10.0
+ idna==3.11
+ iniconfig==2.3.0
+ jmespath=1.0.1
+ Kaleido==1.2.0
+ Kiwi-Solver==1.4.9
+ logistro==2.0.1
+ matplotlib==3.10.7
+ Multidict==6.7.0
+ Narwale==2.10.2
+ numpy==2.3.4
+ Orison==3.11.4
+ Verpackung==25.0
+ Pandas==2.3.3
+ Kissen==12.0.0
+ pip==24.0
+ Plattformverzeichnis==4.5.0
+ Handlung == 6.4.0
+ stecker==1.6.0
+ Propcache==0.4.1
+ Pyramiden==22.0.0
+ Pigmente ==2.19.2
+ Pyparsen ==3.2.5
+ pytest-Timeout==2.4.0
+ pytest==8.4.2
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ Anfragen ==2.32.5
+ s3fs==2025.10.0
+ s3-Übertragung ==0.14.0
+ seaborn==0.13.2
+ Einrichtungswerkzeuge == 79.0.1
+ einfaches JSON==3.20.2
+ sechs == 1.17.0
+ Hartnäckigkeit == 9.1.2
+ Typisierungserweiterungen==4.15.0
+ tzdata == 2025.2
+ urllib3==2.5.0
+ uv==0.9.7
+ virtuelle Umgebung == 20.35.4
+ Wrapt==1.17.3
+ Yarl==1.22.0

------
#### [ AWS Glue version 5.0 ]

AWS Glue Version 5.0 enthält standardmäßig die folgenden Python-Module:
+ aiobotocore==2.13.1
+ aiohappyeyeballs==2.3.5
+ aiohttp==3.10.1
+ aioitertools==0.11.0
+ aiosignal==1.3.1
+ appdirs==1.4.4
+ attrs==24.2.0
+ Boot 3 = 1.34.131
+ Botocore==1.34.131
+ Zertifikat == 2024.7.4
+ Zeichensatz-Normalisierer==3.3.2
+ contourpy==1.2.1
+ cycler==0.12.1
+ fonttools==4.53.1
+ frozenlist==1.4.1
+ fsspec==2024.6.1
+ idna==2.10
+ jmespath==0.10.0
+ kaleido==0.2.1
+ Kiwi-Solver==1.4.5
+ matplotlib==3.9.0
+ Multidict==6.0.5
+ numpy==1.26.4
+ Verpackung==24.1
+ Pandas==2.2.2
+ Kissen==10.4.0
+ pip==23.0.1
+ plotly==5.23.0
+ Pfeil==17.0.0
+ pyparsing==3.1.2
+ python-dateutil==2.9.0.post0
+ pytz==2024.1
+ requests==2.32.2
+ s3fs==2024.6.1
+ s3transfer==0.10.2
+ seaborn==0.13.2
+ setuptools==59.6.0
+ six==1.16.0
+ tenacity==9.0.0
+ tzdata==2024.1
+ urllib3==1.25.10
+ virtualenv==20.4.0
+ wrapt==1.16.0
+ yarl==1.9.4

------
#### [ AWS Glue version 4.0 ]

AWS Glue Version 4.0 enthält standardmäßig die folgenden Python-Module:
+ aiobotocore==2.4.1
+ aiohttp==3.8.3
+ aioitertools==0.11.0
+ aiosignal==1.3.1
+ async-timeout==4.0.2
+ asynctest==0.13.0
+ attrs==22.2.0
+ avro-python3==1.10.2
+ boto3==1.24.70
+ botocore==1.27.59
+ certifi==2021.5.30
+ chardet 3.0.4
+ charset-normalizer==2.1.1
+ click==8.1.3
+ cycler 0.10.0
+ Cython==0.29.32
+ fsspec==2021.8.1
+ idna==2.10
+ importlib-metadata==5.0.0
+ jmespath==0.10.0
+ joblib==1.0.1
+ kaleido==0.2.1
+ kiwisolver==1.4.4
+ matplotlib==3.4.3
+ mpmath==1.2.1
+ multidict==6.0.4
+ nltk==3.7
+ numpy==1.23.5
+ packaging==23.0
+ pandas==1.5.1
+ patsy 0.5.1
+ Pillow==9.4.0
+ pip==23.0.1
+ plotly==5.16.0
+ pmdarima==2.0.1
+ ptvsd 4.3.2
+ pyarrow==10.0.0
+ pydevd==2.5.0
+ pyhocon==0.3.58
+ PyMySQL==1.0.2
+ pyparsing==2.4.7
+ python-dateutil==2.8.2
+ pytz==2021.1
+ PyYAML==6.0.1
+ regex==2022.10.31
+ requests 2.23.0
+ s3fs==2022.11.0
+ s3transfer==0.6.0
+ scikit-learn==1.1.3
+ scipy==1.9.3
+ setuptools==49.1.3
+ six==1.16.0
+ statsmodels==0.13.5
+ subprocess32 3.5.4
+ sympy==1.8
+ tbats==1.1.0
+ threadpoolctl==3.1.0
+ tqdm==4.64.1
+ typing\$1extensions==4.4.0
+ urllib3==1.25.11
+ wheel==0.37.0
+ wrapt==1.14.1
+ yarl==1.8.2
+ zipp==3.10.0

------
#### [ AWS Glue version 3.0 ]

AWS Glue Version 3.0 enthält standardmäßig die folgenden Python-Module:,
+ aiobotocore==1.4.2
+ aiohttp==3.8.3
+ aioitertools==0.11.0
+ aiosignal==1.3.1
+ async-timeout==4.0.2
+ asynctest==0.13.0
+ attrs==22.2.0
+ avro-python3==1.10.2
+ boto3==1.18.50
+ botocore==1.21.50
+ certifi==2021.5.30
+ chardet 3.0.4
+ charset-normalizer==2.1.1
+ click==8.1.3
+ cycler 0.10.0
+ Cython==0.29.4
+ docutils==0.17.1
+ enum34==1.1.10
+ frozenlist==1.3.3
+ fsspec==2021.8.1
+ idna==2.10
+ importlib-metadata==6.0.0
+ jmespath==0.10.0
+ joblib==1.0.1
+ kiwisolver==1.3.2
+ matplotlib==3.4.3
+ mpmath==1.2.1
+ multidict==6.0.4
+ nltk==3.6.3
+ numpy==1.19.5
+ packaging==23.0
+ pandas==1.3.2
+ patsy 0.5.1
+ Pillow==9.4.0
+ pip==23.0
+ pmdarima==1.8.2
+ ptvsd 4.3.2
+ pyarrow==5.0.0
+ pydevd==2.5.0
+ pyhocon==0.3.58
+ PyMySQL==1.0.2
+ pyparsing==2.4.7
+ python-dateutil==2.8.2
+ pytz==2021.1
+ PyYAML==5.4.1
+ regex==2022.10.31
+ requests 2.23.0
+ s3fs==2021.8.1
+ s3transfer==0.5.0
+ scikit-learn==0.24.2
+ scipy==1.7.1
+ six==1.16.0
+ Spark==1.0
+ statsmodels==0.12.2
+ subprocess32 3.5.4
+ sympy==1.8
+ tbats==1.1.0
+ threadpoolctl==3.1.0
+ tqdm==4.64.1
+ typing\$1extensions==4.4.0
+ urllib3==1.25.11
+ wheel==0.37.0
+ wrapt==1.14.1
+ yarl==1.8.2
+ zipp==3.12.0

------
#### [ AWS Glue version 2.0 ]

AWS Glue Version 2.0 enthält standardmäßig die folgenden Python-Module:
+ avro-python3==1.10.0
+ awscli==1.27.60
+ boto3 1.12.4
+ botocore 1.15.4
+ certifi 2019.11.28
+ chardet 3.0.4
+ click==8.1.3
+ colorama==0.4.4
+ cycler 0.10.0
+ Cython 0.29.15
+ docutils 0.15.2
+ enum34 1.1.9
+ fsspec 0.6.2
+ idna 2.9
+ importlib-metadata==6.0.0
+ jmespath 0.9.4
+ joblib 0.14.1
+ kiwisolver 1.1.0
+ matplotlib 3.1.3
+ mpmath 1.1.0
+ nltk==3.5
+ numpy 1.18.1
+ pandas 1.0.1
+ patsy 0.5.1
+ pmdarima 1.5.3
+ ptvsd 4.3.2
+ pyarrow 0.16.0
+ pyasn1==0.4.8
+ pydevd 1.9.0
+ pyhocon 0.3.54
+ PyMySQL==0.9.3
+ pyparsing 2.4.6
+ python-dateutil==2.8.1
+ pytz 2019.3
+ PyYAML==5.3.1
+ regex==2022.10.31
+ requests 2.23.0
+ rsa==4.7.2
+ s3fs 0.4.0
+ s3transfer 0.3.3
+ scikit-learn 0.22.1
+ scipy 1.4.1
+ setuptools 45.2.0
+ six 1.14.0
+ Spark==1.0
+ statsmodels 0.11.1
+ subprocess32 3.5.4
+ sympy 1.5.1
+ tbats 1.0.9
+ tqdm==4.64.1
+ typing-extensions==4.4.0
+ urllib3 1.25.8
+ wheel==0.35.1
+ zipp==3.12.0

------

## Anhang A: Ein Zip of Wheels-Artefakt erstellen
<a name="glue-python-library-zip-of-wheels-appendix"></a>

Wir zeigen anhand eines Beispiels, wie ein Artefakt mit einem Reißverschluss aus Rädern erstellt wird. Das gezeigte Beispiel lädt die Pakete `cryptography` `scipy` in eine Zip of Wheels-Artefakt herunter und kopiert die Postleitzahl der Räder an einen Amazon S3 S3-Speicherort.

1. Sie müssen die Befehle ausführen, um die Zip of Wheels in einer Amazon Linux-Umgebung zu erstellen, die der Umgebung von Glue ähnelt. Siehe [Anhang B: Details zur AWS Glue-Umgebung](#glue-python-libraries-environment-details). Glue 5.1 wird AL2023 mit Python Version 3.11 verwendet. Erstellen Sie ein Dockerfile, das diese Umgebung erstellt:

   ```
   FROM --platform=linux/amd64 public.ecr.aws/amazonlinux/amazonlinux:2023-minimal
   
   # Install Python 3.11, pip, and zip utility
   RUN dnf install -y python3.11 pip zip && \
       dnf clean all
   
   WORKDIR /build
   ```

1. Erstellen Sie eine Datei requirements.txt

   ```
   cryptography
   scipy
   ```

1. Docker-Container erstellen und hochfahren

   ```
   # Build docker image
   docker build --platform linux/amd64 -t glue-wheel-builder .
   
   # Spin up container
   docker run --platform linux/amd64 -v $(pwd)/requirements.txt:/input/requirements.txt:ro -v $(pwd):/output -it glue-wheel-builder bash
   ```

1. Führen Sie die folgenden Befehle im Docker-Image aus

   ```
   # Create a directory for the wheels
   mkdir wheels
   
   # Copy requirements.txt into wheels directory
   cp /input/requirements.txt wheels/
   
   # Download the wheels with the correct platform and Python version
   pip3 download \
       -r wheels/requirements.txt \
       --dest wheels/ \
       --platform manylinux2014_x86_64 \
       --python-version 311 \
       --only-binary=:all:
   
   # Package the wheels into a zip archive with the .gluewheels.zip suffix
   zip -r mylibraries-1.0.0.gluewheels.zip wheels/
   
   # Copy zip to output
   cp mylibraries-1.0.0.gluewheels.zip /output/
   
   # Exit the container
   exit
   ```

1. Laden Sie die ZIP-Datei der Räder an den Amazon S3 S3-Standort hoch

   ```
   aws s3 cp mylibraries-1.0.0.gluewheels.zip s3://amzn-s3-demo-bucket/example-prefix/
   ```

1. Optionale Bereinigung

   ```
   rm mylibraries-1.0.0.gluewheels.zip
   rm Dockerfile
   rm requirements.txt
   ```

1. Führen Sie den Glue-Job mit den folgenden Job-Argumenten aus:

   ```
   --additional-python-modules s3://amzn-s3-demo-bucket/example-prefix/mylibraries-1.0.0.gluewheels.zip
   --python-modules-installer-option --no-index
   ```

## Anhang B: Details zur AWS Glue-Umgebung
<a name="glue-python-libraries-environment-details"></a>


**Kompatibilität und Installationsmethoden der Glue-Version**  

| AWS Ausführung mit Glue | Python-Version | Basis-Image | glibc-Version | Kompatible Plattform-Tags | 
| --- | --- | --- | --- | --- | 
| 5.1 | 3.11 | [Amazon Linux 2023 (AL2023)](https://aws.amazon.com/linux/amazon-linux-2023/) | 2,34 |  viele Linux\$12\$134\$1x86\$164 viele linux\$12\$128\$1x86\$164 viele Linux2014\$1x86\$164  | 
| 5.0 | 3.11 | [Amazon Linux 2023 (AL2023)](https://aws.amazon.com/linux/amazon-linux-2023/) | 2,34 |  viele Linux\$12\$134\$1x86\$164 viele linux\$12\$128\$1x86\$164 viele Linux2014\$1x86\$164  | 
| 4,0 | 3.10 | [Amazon Linux (2AL2)](https://aws.amazon.com/amazon-linux-2/) | 2,26 | viele Linux2014\$1x86\$164 | 
| 3.0 | 3.7 | [Amazon Linux (2AL2)](https://aws.amazon.com/amazon-linux-2/) | 2,26 | viele Linux2014\$1x86\$164 | 
| 2.0 | 3.7 | [Amazon Linux-AMI (AL1)](https://aws.amazon.com/amazon-linux-ami/) | 2,17 | viele Linux2014\$1x86\$164 | 

 Im Rahmen des [Modells der AWS gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) sind Sie für die Verwaltung zusätzlicher Python-Module, -Bibliotheken und deren Abhängigkeiten verantwortlich, die Sie für Ihre AWS Glue-ETL-Jobs verwenden. Dies beinhaltet das Durchführen von Updates und Sicherheitspatches. 

 AWS Glue unterstützt das Kompilieren von nativem Code in der Jobumgebung nicht. AWS Glue-Jobs werden jedoch in einer von Amazon verwalteten Linux-Umgebung ausgeführt. Möglicherweise können Sie Ihre nativen Abhängigkeiten in einer kompilierten Form über eine Python-Wheel-Datei bereitstellen. Einzelheiten zur Kompatibilität der AWS Glue-Version finden Sie in der obigen Tabelle. 

**Wichtig**  
 Die Verwendung inkompatibler Abhängigkeiten kann zu Laufzeitproblemen führen, insbesondere bei Bibliotheken mit nativen Erweiterungen, die mit der Architektur und den Systembibliotheken der Zielumgebung übereinstimmen müssen. Jede AWS Glue-Version läuft auf einer bestimmten Python-Version mit vorinstallierten Bibliotheken und Systemkonfigurationen. 