View a markdown version of this page

Menggunakan pustaka Python dengan AWS Lem - AWS Lem

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan pustaka Python dengan AWS Lem

Anda dapat menginstal modul dan pustaka Python tambahan untuk digunakan dengan AWS Glue ETL. Untuk AWS Glue 2.0 dan di atasnya, AWS Glue menggunakan Python Package Installer (pip3) untuk menginstal modul tambahan yang digunakan oleh AWS Glue ETL. AWS Glue menyediakan beberapa opsi untuk membawa modul Python tambahan ke lingkungan pekerjaan AWS Glue Anda. Anda dapat menggunakan --additional-python-modules parameter untuk membawa modul baru menggunakan file zip yang berisi roda Python yang dibundel (juga dikenal sebagai “zip roda”, tersedia untuk AWS Glue 5.0 dan di atasnya), file roda Python individual, file persyaratan (requirements.txt, tersedia untuk AWS Glue 5.0 dan di atas), atau daftar modul Python yang dipisahkan koma. Ini juga dapat digunakan untuk mengubah versi modul python yang disediakan di lingkungan AWS Glue (lihat Modul Python sudah disediakan di AWS Lem untuk lebih jelasnya).

Untuk AWS Glue 5.0 dan di atasnya, cara yang disarankan untuk menginstal modul Python adalah dengan menjalankan pekerjaan Anda di lingkungan virtual Python (venv). Untuk informasi selengkapnya, lihat (Direkomendasikan) Menggunakan lingkungan virtual Python di AWS Lem 5.0 atau lebih tinggi.

(Direkomendasikan) Menggunakan lingkungan virtual Python di AWS Lem 5.0 atau lebih tinggi

Untuk AWS Glue 5.0 dan di atasnya, menjalankan pekerjaan Anda di dalam lingkungan virtual Python (venv) adalah cara yang disarankan untuk menginstal modul Python. Gunakan lingkungan virtual untuk pekerjaan baru, dan pertimbangkan untuk memindahkan pekerjaan yang ada ke satu.

Dengan --additional-python-modules sendirinya, pip menyelesaikan dependensi Anda dari PyPI setiap pekerjaan yang dijalankan, sehingga rilis upstream baru dapat mengubah apa yang diinstal pekerjaan Anda. Lingkungan virtual menyelesaikannya sekali dan menggunakan kembali hasilnya, jadi nanti jalankan instal versi yang sama. AWS Lem mendukung dua cara untuk menggunakannya, dan keduanya berbeda ketika resolusi itu terjadi dan parameter mana yang Anda tetapkan:

  • Service-generated lingkungan virtual - Tersedia di AWS Glue 6.0 dan yang lebih baru. Anda menambahkan --python-virtual-env-storage-prefix parameter dan menjaga --additional-python-modules nilai yang ada. AWS Glue menyelesaikan modul Anda pada proses pekerjaan pertama, menyimpan lingkungan virtual di Amazon S3, dan menggunakannya kembali saat dijalankan nanti, jadi tidak diperlukan build lokal. Karena AWS Glue membuatnya dengan--system-site-packages, lingkungan virtual mewarisi modul yang sudah ada di lingkungan dasar.

  • Lingkungan virtual yang dibangun secara manual - Tersedia di AWS Glue 5.0 dan yang lebih baru. Anda membangun lingkungan virtual di mesin lokal Anda atau dalam CI/CD pipeline, mengunggahnya ke Amazon S3, dan merujuknya dengan --python-virtual-env parameter. Dependensi Anda diselesaikan pada waktu pembuatan, sebelum pekerjaan apa pun dijalankan. Ini memberi Anda kontrol paling banyak, dan ini adalah pendekatan yang digunakan untuk pohon ketergantungan yang kompleks atau ketika build Anda berjalan dalam pipa.

penting

Kedua pendekatan berbeda dalam hal apakah pekerjaan Anda masih memiliki akses ke modul yang tercantum diModul Python sudah disediakan di AWS Lem:

  • Lingkungan virtual yang dibangun secara manual menggantikan lingkungan Python sepenuhnya dan tidak mewarisi modul tersebut. Anda harus menyertakan setiap paket yang dibutuhkan pekerjaan Anda, termasuk paket yang sebelumnya tersedia dari lingkungan dasar sepertiboto3,numpy, danpandas.

  • Lingkungan virtual yang dihasilkan layanan mewarisi modul-modul tersebut, jadi persyaratan ini tidak berlaku.

Untuk perbandingan kedua pendekatan, langkah-langkah migrasi untuk pekerjaan yang saat ini digunakan--additional-python-modules, dan panduan pemecahan masalah, lihatMenggunakan lingkungan virtual Python dengan AWS Lem.

Menginstal modul Python tambahan dengan pip in AWS Lem 2.0 atau yang lebih baru

AWS Glue menggunakan Python Package Installer (pip3) untuk menginstal modul tambahan untuk digunakan oleh AWS Glue ETL. Anda dapat menggunakan --additional-python-modules parameter dengan daftar modul Python yang dipisahkan koma untuk menambahkan modul baru atau mengubah versi modul yang ada. Anda dapat menginstal artefak roda buatan baik melalui ritsleting roda atau artefak roda mandiri dengan mengunggah file ke Amazon S3, lalu menyertakan jalur ke objek Amazon S3 dalam daftar modul Anda. Untuk informasi selengkapnya tentang menyetel parameter pekerjaan, lihat Menggunakan parameter pekerjaan di pekerjaan AWS lem.

Anda dapat meneruskan opsi tambahan ke pip3 dengan --python-modules-installer-option parameter. Misalnya, Anda dapat meneruskan --only-binary untuk memaksa pip untuk menginstal hanya artefak pra-bangun untuk paket yang ditentukan oleh--additional-python-modules. Untuk contoh selengkapnya, lihat Membangun modul Python dari roda untuk beban kerja Spark ETL menggunakan AWS Glue 2.0.

Praktik Terbaik untuk Manajemen Ketergantungan Python

Untuk AWS Glue 5.0 dan di atasnya, AWS Glue merekomendasikan menjalankan pekerjaan Anda di lingkungan virtual Python (venv). Alih-alih menyelesaikan dependensi Anda dari PyPI setiap pekerjaan yang dijalankan, lingkungan virtual menyelesaikannya sekali dan menggunakan kembali hasilnya, jadi nanti jalankan instal versi yang sama. Untuk informasi selengkapnya, lihat (Direkomendasikan) Menggunakan lingkungan virtual Python di AWS Lem 5.0 atau lebih tinggi.

Jika Anda menggunakan --additional-python-modules untuk beban kerja produksi, kemas semua dependensi Python Anda sebagai file roda dalam satu artefak zip. Dibandingkan dengan --additional-python-modules bentuk lain, ini menyediakan:

  • Eksekusi deterministik: Kontrol yang tepat atas versi paket mana yang diinstal

  • Keandalan: Tidak ada ketergantungan pada repositori paket eksternal selama eksekusi pekerjaan

  • Kinerja: Operasi unduhan tunggal alih-alih beberapa panggilan jaringan

  • Instalasi offline: Bekerja di lingkungan VPC pribadi tanpa akses internet

Pertimbangan Penting

Di bawah model tanggung jawab AWS bersama, Anda bertanggung jawab untuk mengelola modul Python tambahan, pustaka, dan dependensinya. Hal ini mencakup:

  • Pembaruan keamanan: Memperbarui paket secara teratur untuk mengatasi kerentanan keamanan

  • Kompatibilitas versi: Memastikan paket kompatibel dengan versi AWS Glue Anda

  • Pengujian: Memvalidasi bahwa dependensi paket Anda berfungsi dengan benar di lingkungan Glue

Jika Anda memiliki dependensi minimal, Anda dapat mempertimbangkan untuk menggunakan file roda individual sebagai gantinya.

Bagian berikut menjelaskan cara untuk menentukan modul dengan--additional-python-modules. Untuk AWS Glue 5.0 ke atas, pertimbangkan sebagai (Direkomendasikan) Menggunakan lingkungan virtual Python di AWS Lem 5.0 atau lebih tinggi gantinya.

AWS Glue 5.0 dan di atasnya mendukung pengemasan beberapa file roda menjadi satu artefak zip yang berisi roda Python yang dibundel untuk manajemen ketergantungan yang lebih andal dan deterministik. Untuk menggunakan pendekatan ini, buat file zip yang berisi semua dependensi roda Anda dan dependensi transitifnya dengan akhiran, unggah ke Amazon S3, dan referensikan menggunakan parameter. .gluewheels.zip --additional-python-modules Pastikan untuk menambahkan --no-index ke parameter --python-modules-installer-option pekerjaan. Dengan konfigurasi ini, file zip of wheels pada dasarnya bertindak sebagai indeks lokal untuk pip untuk menyelesaikan dependensi dari saat runtime. Ini menghilangkan dependensi pada repositori paket eksternal seperti PyPI selama eksekusi pekerjaan, memberikan stabilitas dan konsistensi yang lebih besar untuk beban kerja produksi. Contoh:

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

Untuk Petunjuk tentang cara membuat file zip roda, lihatLampiran A: Membuat Artefak Ritsleting Roda.

AWS Glue mendukung pemasangan paket Python khusus menggunakan file roda (.whl) yang disimpan di Amazon S3. Untuk menyertakan file roda dalam pekerjaan AWS Glue Anda, berikan daftar file roda yang dipisahkan koma yang disimpan di s3 ke parameter --additional-python-modules pekerjaan. Contoh:

--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

Pendekatan ini juga mendukung ketika Anda memerlukan distribusi khusus, atau paket dengan dependensi asli yang telah dikompilasi sebelumnya untuk sistem operasi yang benar. Untuk contoh selengkapnya, lihat Membangun modul Python dari roda untuk beban kerja Spark ETL menggunakan AWS Glue 2.0.

Di AWS Glue 5.0+, Anda dapat menyediakan standar defacto requirements.txt untuk mengelola dependensi pustaka Python. Untuk melakukan itu, berikan dua parameter pekerjaan berikut:

  • Kunci: --python-modules-installer-option

    Nilai: -r

  • Kunci: --additional-python-modules

    Nilai: s3://path_to_requirements.txt

AWS Glue 5.0 node awalnya memuat pustaka python yang ditentukan direquirements.txt.

Berikut contoh 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
penting

Gunakan opsi ini dengan hati-hati, terutama dalam beban kerja produksi. Menarik dependensi dari PyPI saat runtime sangat berisiko karena Anda tidak dapat memastikan artefak apa yang diselesaikan pip. Menggunakan versi pustaka yang tidak disematkan sangat berisiko karena menarik versi terbaru dari modul python, yang dapat memperkenalkan perubahan besar atau membawa modul python yang tidak kompatibel. Ini dapat mengakibatkan kegagalan pekerjaan karena kegagalan instalasi python di lingkungan pekerjaan AWS Glue. Sementara menyematkan versi pustaka meningkatkan stabilitas, resolusi pip masih belum sepenuhnya deterministik, sehingga masalah serupa dapat muncul. Sebagai praktik terbaik, AWS Glue merekomendasikan penggunaan artefak beku seperti ritsleting roda atau file roda individu (lihat Menginstal pustaka Python tambahan di AWS Lem 5.0 atau lebih tinggi menggunakan Zip of Wheels untuk lebih jelasnya).

penting

Jika Anda tidak menyematkan versi dependensi transitif Anda, ketergantungan utama dapat menarik versi ketergantungan transitif yang tidak kompatibel. Sebagai praktik terbaik, semua versi pustaka harus disematkan untuk meningkatkan konsistensi dalam pekerjaan AWS Glue. Lebih baik lagi, AWS Glue merekomendasikan mengemas dependensi Anda ke dalam file zip roda untuk memastikan konsistensi dan keandalan maksimum untuk beban kerja produksi Anda.

Untuk memperbarui atau menambahkan modul Python baru, AWS Glue memungkinkan penerusan --additional-python-modules parameter dengan daftar modul Python yang dipisahkan koma sebagai nilai. Misalnya untuk memperbarui/menambahkan modul scikit-learn gunakan yang berikut:. key/value "--additional-python-modules", "scikit-learn==0.21.3" Anda memiliki dua opsi untuk langsung mengkonfigurasi modul python.

  • Modul Python yang Disematkan

    "--additional-python-modules", "scikit-learn==0.21.3,ephem==4.1.6"

  • Modul Python yang tidak disematkan: (Tidak direkomendasikan untuk Beban Kerja Produksi)

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

    ATAU

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

penting

Gunakan opsi ini dengan hati-hati, terutama dalam beban kerja produksi. Menarik dependensi dari PyPI saat runtime sangat berisiko karena Anda tidak dapat memastikan artefak apa yang diselesaikan pip. Menggunakan versi pustaka yang tidak disematkan sangat berisiko karena menarik versi terbaru dari modul python, yang dapat memperkenalkan perubahan besar atau membawa modul python yang tidak kompatibel. Ini dapat mengakibatkan kegagalan pekerjaan karena kegagalan instalasi python di lingkungan pekerjaan AWS Glue. Sementara menyematkan versi pustaka meningkatkan stabilitas, resolusi pip masih belum sepenuhnya deterministik, sehingga masalah serupa dapat muncul. Sebagai praktik terbaik, AWS Glue merekomendasikan penggunaan artefak beku seperti ritsleting roda atau file roda individu (lihat Menginstal pustaka Python tambahan di AWS Lem 5.0 atau lebih tinggi menggunakan Zip of Wheels untuk lebih jelasnya).

penting

Jika Anda tidak menyematkan versi dependensi transitif Anda, ketergantungan utama dapat menarik versi ketergantungan transitif yang tidak kompatibel. Sebagai praktik terbaik, semua versi pustaka harus disematkan untuk meningkatkan konsistensi dalam pekerjaan AWS Glue. Lebih baik lagi, AWS Glue merekomendasikan mengemas dependensi Anda ke dalam file zip roda untuk memastikan konsistensi dan keandalan maksimum untuk beban kerja produksi Anda.

Termasuk file Python dengan fitur PySpark asli

AWS Glue digunakan PySpark untuk menyertakan file Python dalam pekerjaan AWS Glue ETL. Anda akan ingin menggunakannya --additional-python-modules untuk mengelola dependensi Anda jika tersedia. Anda dapat menggunakan parameter --extra-py-files pekerjaan untuk menyertakan file Python. Dependensi harus di-host di Amazon S3 dan nilai argumen harus berupa daftar jalur Amazon S3 yang dibatasi koma tanpa spasi. Fungsi ini berperilaku seperti manajemen ketergantungan Python yang akan Anda gunakan dengan Spark. Untuk informasi selengkapnya tentang manajemen ketergantungan Python di Spark, lihat halaman Menggunakan Fitur PySpark Asli di dokumentasi Apache Spark. --extra-py-filesberguna dalam kasus di mana kode tambahan Anda tidak dikemas, atau ketika Anda memigrasikan program Spark dengan rantai alat yang ada untuk mengelola dependensi. Agar alat ketergantungan Anda dapat dipertahankan, Anda harus menggabungkan dependensi Anda sebelum mengirimkan.

Skrip pemrograman yang menggunakan transformasi visual

Saat Anda membuat pekerjaan AWS Glue menggunakan antarmuka visual AWS Glue Studio, Anda dapat mengubah data Anda dengan node transformasi data terkelola dan transformasi visual khusus. Untuk informasi selengkapnya tentang node transformasi data terkelola, lihatTransformasi data dengan transformasi AWS Glue terkelola. Untuk informasi selengkapnya tentang transformasi visual kustom, lihatMengubah data dengan transformasi visual kustom. Skrip yang menggunakan transformasi visual hanya dapat dihasilkan ketika Bahasa pekerjaan Anda diatur untuk menggunakan Python.

Saat membuat pekerjaan AWS Glue menggunakan transformasi visual, AWS Glue Studio akan menyertakan transformasi ini di lingkungan runtime menggunakan --extra-py-files parameter dalam konfigurasi pekerjaan. Untuk informasi selengkapnya tentang parameter pekerjaan, lihatMenggunakan parameter pekerjaan di AWS Lowongan kerja Glue. Saat membuat perubahan pada skrip atau lingkungan runtime yang dihasilkan, Anda harus mempertahankan konfigurasi pekerjaan ini agar skrip Anda berjalan dengan sukses.

Pustaka zip untuk dimasukkan

Kecuali sebuah perpustakaan terkandung dalam satu file .py, ia harus dikemas dalam sebuah arsip .zip. Direktori paket harus berada pada akar dari arsip, dan harus berisi file __init__.py untuk paket. Python kemudian akan dapat mengimpor paket tersebut dengan cara normal.

Jika perpustakaan anda hanya terdiri dari sebuah modul Python tunggal dalam satu file .py, Anda tidak perlu menempatkannya dalam sebuah file .zip.

Memuat pustaka Python di AWS Notebook Glue Studio

Untuk menentukan pustaka Python di buku catatan AWS Glue Studio, lihat Menginstal modul Python tambahan.

Memuat pustaka Python di titik akhir pengembangan di AWS Lem 0. 9/1.0

Jika Anda menggunakan set perpustakaan yang berbeda untuk skrip ETL yang berbeda, maka Anda dapat mengatur titik akhir pengembangan terpisah untuk setiap set, atau Anda dapat menimpa file .zip perpustakaan yang dimuat titik akhir pengembangan Anda setiap kali Anda beralih skrip.

Anda dapat menggunakan konsol untuk menentukan satu atau beberapa perpustakaan file .zip untuk sebuah titik akhir pengembangan ketika Anda membuatnya. Setelah menetapkan nama dan IAM role, pilih Perpustakaan Skrip dan parameter tugas (opsional) dan masukkan path Amazon S3 lengkap ke file .zip perpustakaan Anda dalam kotak path perpustakaan Python. Contoh:

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

Jika Anda mau, Anda dapat menentukan beberapa path lengkap ke file, memisahkannya dengan koma tetapi tanpa spasi, seperti ini:

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

Jika Anda kemudian memperbarui file .zip, Anda dapat menggunakan konsol untuk mengimpornya kembali ke titik akhir pengembangan Anda. Arahkan ke titik akhir developer yang dimaksud, centang kotak di sampingnya, dan pilih Memperbarui perpustakaan ETL dari menu Tindakan.

Dengan cara yang sama, Anda dapat menentukan file pustaka menggunakan AWS Glue API. Ketika Anda membuat sebuah titik akhir pengembangan dengan memanggil CreateDevEndpoint tindakan (Python: create_dev_endpoint), Anda dapat menentukan satu atau beberapa path lengkap ke perpustakaan di parameter ExtraPythonLibsS3Path, dalam panggilan yang terlihat seperti ini:

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")

Ketika Anda memperbarui titik akhir pengembangan, Anda juga dapat memperbarui perpustakaan yang dimuatnya menggunakan objek DevEndpointCustomLibraries dan pengaturan parameter UpdateEtlLibraries untuk True ketika memanggil UpdateDevEndpoint (update_dev_endpoint).

Menggunakan pustaka Python dalam pekerjaan atau JobRun

Ketika Anda membuat sebuah Tugas baru pada konsol, Anda dapat menentukan satu atau beberapa perperpustakaanan file .zip dengan memilih Perpustakaan skrip dan parameter tugas (opsional) dan memasukkan path perpustakaan Amazon S3 lengkap dengan cara yang sama saat membuat titik akhir pengembangan:

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

Jika Anda memanggil CreateJob (buat_pekerjaan), Anda dapat menentukan satu atau beberapa path lengkap ke perpustakaan default menggunakan parameter --extra-py-files default, seperti ini:

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'})

Kemudian ketika Anda memulai JobRun, Anda dapat mengganti pengaturan pustaka default dengan yang berbeda:

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

Secara proaktif menganalisis dependensi Python

Untuk secara proaktif mengidentifikasi potensi masalah ketergantungan sebelum menerapkan ke AWS Glue, Anda dapat menggunakan alat analisis ketergantungan untuk memvalidasi paket Python Anda terhadap lingkungan Glue target AWS Anda.

AWS menyediakan alat penganalisis ketergantungan Python sumber terbuka yang dirancang khusus untuk lingkungan AWS Glue. Alat ini tersedia di repositori sampel AWS Glue dan dapat digunakan secara lokal untuk memvalidasi dependensi Anda sebelum penerapan.

Analisis ini membantu memastikan dependensi Anda mengikuti praktik yang disarankan untuk menyematkan semua versi pustaka untuk penerapan produksi yang konsisten. Untuk lebih jelasnya, silakan lihat README alat.

Glu AWS e Python Dependency Analyzer membantu mengidentifikasi dependensi yang tidak disematkan dan konflik versi dengan mensimulasikan instalasi pip dengan batasan khusus platform yang sesuai dengan lingkungan Glue target Anda. 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

Alat ini akan menandai:

  • Dependensi yang tidak disematkan yang dapat menginstal versi berbeda di seluruh proses pekerjaan

  • Konflik versi antar paket

  • Dependensi tidak tersedia untuk lingkungan AWS Glue target Anda

Amazon Q Developer adalah asisten percakapan yang didukung kecerdasan buatan (AI) generatif yang dapat membantu Anda memahami, membangun, memperluas, dan mengoperasikan AWS aplikasi. Anda dapat mengunduhnya dengan mengikuti petunjuk di panduan Memulai untuk Amazon Q.

Amazon Q Developer dapat digunakan untuk menganalisis dan memperbaiki kegagalan pekerjaan karena ketergantungan python. Sebaiknya gunakan prompt berikut dengan mengganti placeholder job < Job-Name > dengan nama pekerjaan lem Anda.

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.

Prompt menginstruksikan Q untuk:

  1. Ambil ID menjalankan pekerjaan terbaru yang gagal

  2. Temukan log dan detail terkait

  3. Temukan pekerjaan yang berhasil dijalankan untuk mendeteksi paket Python yang diubah

  4. Buat perbaikan konfigurasi apa pun dan picu uji coba lain

Modul Python sudah disediakan di AWS Lem

Untuk mengubah versi modul yang disediakan ini, berikan versi baru dengan parameter --additional-python-modules pekerjaan.

AWS Glue version 6.0

AWS Lem versi 6.0 menyertakan modul Python berikut di luar kotak:

  • aiobotocore==3.4.0

  • aiohappyeyeballs==2.6.1

  • aiohttp==3.13.5

  • alat aioiter==0.13.0

  • aiosignal==1.4.0

  • appdirs==1.4.4

  • Attrs==26.1.0

  • boto3==1.42.84

  • botocore==1.42.84

  • sertifikasi ==2026.2.25

  • charset normaliser==3.4.7

  • koreograf==1.2.1

  • kontur==1.3.3

  • pengendara sepeda ==0.12.1

  • distlib==0.4.0

  • filelock ==3.25.2

  • alat font==4.62.1

  • daftar beku ==1.8.0

  • fsspec==2026.3.0

  • googleapis-protos-umum ==1.75.0

  • status grpcio ==1.81.0

  • grpcio==1.81.0

  • idna==3.11

  • iniconfig==2.3.0

  • jmespath ==1.1.0

  • kaleido==1.2.0

  • kiwisisolver==1.5.0

  • logistik ==2.0.1

  • matplotlib==3.10.8

  • multidikt==6.7.1

  • ikan narwhals==2.19.0

  • nompi==2.4.4

  • orsion==3.11.8

  • pengepasan==26.0

  • panda==2.3.3

  • bantal ==12.2.0

  • pip==24,0

  • platformdirs==4.9.6

  • secara plot==6.7.0

  • Pluggy==1.6.0

  • propcache==0.4.1

  • protobuf==7.35.0

  • pyarrow==23.0.1

  • Pygments==2.20.0

  • pyparsing==3.3.2

  • batas waktu pytest ==2.4.0

  • test ==9.0.3

  • python-dateutil==2.9.0.post0

  • penemuan python ==1.2.2

  • pytz==2026.1.post1

  • Pyyaml==6.0.3

  • permintaan==2.33.1

  • s3fs ==2026.3.0

  • s3transfer==0.16.0

  • melaut ==0.13.2

  • alat pengaturan==79.0.1

  • simplejson==3.20.2

  • enam ==1.17.0

  • keuletan ==9.1.2

  • mengetik_ekstensi==4.15.0

  • tzdata ==2026.1

  • urllib3==2.6.3

  • uv ==0.11.6

  • virtual env ==21.2.1

  • membungkus==2.1.2

  • yarl==1,23,0

  • zstandar==0.25.0

AWS Glue version 5.1

AWS Lem versi 5.1 menyertakan modul Python berikut di luar kotak:

  • aiobotocore==2.25.1

  • aiohappyeyeballs==2.6.1

  • aiohttp==3.13.2

  • alat aioiter==0.12.0

  • aiosignal==1.4.0

  • appdirs==1.4.4

  • Attrs==25.4.0

  • boto3==1.40.61

  • botocore==1.40.61

  • sertifikasi ==2025.10.5

  • charset-normalizer ==3.4.4

  • koreograf==1.2.0

  • kontur==1.3.3

  • pengendara sepeda ==0.12.1

  • distlib==0.4.0

  • filelock ==3.20.0

  • alat font==4.60.1

  • daftar beku ==1.8.0

  • fsspec==2025.10.0

  • idna==3.11

  • iniconfig==2.3.0

  • jmespath ==1.0.1

  • kaleido==1.2.0

  • kiwisisolver==1.4.9

  • logistik ==2.0.1

  • matplotlib==3.10.7

  • multidikt==6.7.0

  • ikan narwhals==2.10.2

  • nompi==2.3.4

  • orsion==3.11.4

  • pengepasan==25.0

  • panda==2.3.3

  • bantal ==12.0.0

  • pip==24,0

  • platform dirs==4.5.0

  • plotnya==6.4.0

  • Pluggy==1.6.0

  • propcache==0.4.1

  • pyarrow==22.0.0

  • Pygments==2.19.2

  • pyparsing==3.2.5

  • waktu tunggu pytest ==2.4.0

  • Pityst==8.4.2

  • python-dateutil==2.9.0.post0

  • pytz==2025.2

  • permintaan==2.32.5

  • s3fs ==2025.10.0

  • s3transfer==0.14.0

  • melaut ==0.13.2

  • alat pengaturan==79.0.1

  • simplejson==3.20.2

  • enam ==1.17.0

  • keuletan ==9.1.2

  • mengetik_ekstensi==4.15.0

  • tzdata ==2025.2

  • urllib3==2.5.0

  • uv ==0.9.7

  • virtual env ==20.35.4

  • membungkus==1.17.3

  • yarl==1.22.0

AWS Glue version 5.0

AWS Lem versi 5.0 mencakup modul Python berikut di luar kotak:

  • aiobotocore==2.13.1

  • aiohappyeyeballs==2.3.5

  • aiohttp==3.10.1

  • alat aioiter==0.11.0

  • aiosignal==1.3.1

  • appdirs==1.4.4

  • Attrs==24.2.0

  • boto3==1.34.131

  • botocore==1.34.131

  • sertifikasi ==2024.7.4

  • charset-normalizer ==3.3.2

  • kontur==1.2.1

  • pengendara sepeda ==0.12.1

  • alat font==4.53.1

  • daftar beku ==1.4.1

  • fsspec==2024.6.1

  • idna==2,10

  • jmespath ==0.10.0

  • kaleido==0.2.1

  • kiwisisolver==1.4.5

  • matplotlib==3.9.0

  • multidikt==6.0.5

  • nompi==1.26.4

  • pengepasan==24.1

  • panda==2.2.2

  • bantal ==10.4.0

  • pip==23,0,1

  • plot==5.23.0

  • pyarrow==17.0.0

  • pyparsing==3.1.2

  • python-dateutil==2.9.0.post0

  • pytz==2024.1

  • permintaan==2.32.2

  • s3fs ==2024.6.1

  • s3transfer==0.10.2

  • melaut ==0.13.2

  • alat pengaturan==59.6.0

  • enam ==1.16.0

  • keuletan ==9.0.0

  • tzdata ==2024.1

  • urllib3==1.25.10

  • virtual env ==20.4.0

  • membungkus==1.16.0

  • yarl==1.9.4

AWS Glue version 4.0

AWS Lem versi 4.0 menyertakan modul Python berikut di luar kotak:

  • aiobotocore==2.4.1

  • aiohttp==3.8.3

  • alat aioiter==0.11.0

  • aiosignal==1.3.1

  • batas waktu asinkron==4.0.2

  • asynctest ==0.13.0

  • Attrs==22.2.0

  • avro-python3==1.10.2

  • boto3==1.24.70

  • botocore==1.27.59

  • sertifikasi ==2021.5.30

  • chardet==3.0.4

  • charset-normalizer ==2.1.1

  • klik==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

  • kiwisisolver==1.4.4

  • matplotlib==3.4.3

  • mpmath==1.2.1

  • multidik==6.0.4

  • nltk==3.7

  • nompi==1.23.5

  • pengepasan==23.0

  • panda==1.5.1

  • patsy==0.5.1

  • Bantal ==9.4.0

  • pip==23,0,1

  • plot==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

  • parsing==2.4.7

  • python-dateutil==2.8.2

  • pytz==2021.1

  • Pyyaml ==6.0.1

  • reguler==2022.10.31

  • requests==2.23.0

  • s3fs ==2022.11.0

  • s3transfer==0.6.0

  • scikit-learn==1.1.3

  • scipi==1.9.3

  • alat pengaturan==49.1.3

  • enam ==1.16.0

  • model statistik ==0.13.5

  • subprocess32==3.5.4

  • simpati==1.8

  • tbats==1.1.0

  • threadpoolctl ==3.1.0

  • tqdm ==4.64.1

  • mengetik_ekstensi==4.4.0

  • urllib3==1.25.11

  • roda ==0.37.0

  • membungkus==1.14.1

  • yarl==1.8.2

  • zip ==3.10.0

AWS Glue version 3.0

AWS Lem versi 3.0 menyertakan modul Python berikut di luar kotak:,

  • aiobotocore==1.4.2

  • aiohttp==3.8.3

  • alat aioiter==0.11.0

  • aiosignal==1.3.1

  • batas waktu asinkron==4.0.2

  • asynctest ==0.13.0

  • Attrs==22.2.0

  • avro-python3==1.10.2

  • boto3==1.18.50

  • botocore==1.21.50

  • sertifikasi ==2021.5.30

  • chardet==3.0.4

  • charset-normalizer ==2.1.1

  • klik==8.1.3

  • cycler==0.10.0

  • Cython==0.29.4

  • dokumentar==0.17.1

  • nomor34==1.1.10

  • daftar beku ==1.3.3

  • fsspec==2021.8.1

  • idna==2,10

  • importlib metadata==6.0.0

  • jmespath ==0.10.0

  • joblib==1.0.1

  • kiwisisolver==1.3.2

  • matplotlib==3.4.3

  • mpmath==1.2.1

  • multidik==6.0.4

  • nltk ==3.6.3

  • nompi==1.19.5

  • pengepasan==23.0

  • panda==1.3.2

  • patsy==0.5.1

  • Bantal ==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

  • parsing==2.4.7

  • python-dateutil==2.8.2

  • pytz==2021.1

  • Pyyaml==5.4.1

  • reguler==2022.10.31

  • requests==2.23.0

  • s3fs ==2021.8.1

  • s3transfer==0.5.0

  • scikit-learn==0.24.2

  • ilmu==1.7.1

  • enam ==1.16.0

  • Percikan ==1.0

  • model statistik ==0.12.2

  • subprocess32==3.5.4

  • simpati==1.8

  • tbats==1.1.0

  • threadpoolctl ==3.1.0

  • tqdm ==4.64.1

  • mengetik_ekstensi==4.4.0

  • urllib3==1.25.11

  • roda ==0.37.0

  • membungkus==1.14.1

  • yarl==1.8.2

  • zip ==3.12.0

AWS Glue version 2.0

AWS Lem versi 2.0 menyertakan modul Python berikut di luar kotak:

  • 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

  • klik==8.1.3

  • warna==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

  • reguler==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

  • Percikan ==1.0

  • statsmodels==0.11.1

  • subprocess32==3.5.4

  • sympy==1.5.1

  • tbats==1.0.9

  • tqdm ==4.64.1

  • ekstensi mengetik==4.4.0

  • urllib3==1.25.8

  • roda ==0.35.1

  • zip ==3.12.0

Lampiran A: Membuat Artefak Ritsleting Roda

Kami mendemonstrasikan dengan contoh cara membuat artefak ritsleting roda. Contoh yang ditampilkan mengunduh paket cryptography dan scipy ke artefak ritsleting roda dan menyalin ritsleting roda ke lokasi Amazon S3.

  1. Anda harus menjalankan perintah untuk membuat zip roda di lingkungan Amazon Linux yang mirip dengan lingkungan Glue. Lihat Lampiran B: AWS Detail lingkungan lem. Glue 5.1 menggunakan AL2023 dengan python versi 3.11. Buat Dockerfile yang akan membangun lingkungan ini:

    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
  2. Buat file requirements.txt

    cryptography scipy
  3. Membangun dan memutar wadah docker

    # 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
  4. Jalankan perintah berikut di gambar docker

    # 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
  5. Unggah zip roda ke lokasi Amazon S3

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

    rm mylibraries-1.0.0.gluewheels.zip rm Dockerfile rm requirements.txt
  7. Jalankan pekerjaan Glue dengan args pekerjaan berikut:

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

Lampiran B: AWS Detail lingkungan lem

Kompatibilitas Versi Lem dan Metode Instalasi
AWS Versi lem Versi Python Gambar dasar versi glibc Tag platform yang kompatibel
6.0 3.13 Amazon Linux 2023 (AL2023) 2.34

manylinux_2_34_x86_64

manylinux_2_28_x86_64

manylinux2014_x86_64

5.1 3.11 Amazon Linux 2023 (AL2023) 2.34

manylinux_2_34_x86_64

manylinux_2_28_x86_64

manylinux2014_x86_64

5.0 3.11 Amazon Linux 2023 (AL2023) 2.34

manylinux_2_34_x86_64

manylinux_2_28_x86_64

manylinux2014_x86_64

4.0 3.10 Amazon Linux 2 (AL2) 2.26 manylinux2014_x86_64
3.0 3.7 Amazon Linux 2 (AL2) 2.26 manylinux2014_x86_64
2.0 3.7 Amazon Linux AMI (AL1) 2.17 manylinux2014_x86_64

Di bawah model tanggung jawab AWS bersama, Anda bertanggung jawab atas pengelolaan modul Python tambahan, pustaka, dan dependensinya yang Anda gunakan dengan pekerjaan AWS Glue ETL Anda. Ini termasuk menerapkan pembaruan dan patch keamanan.

AWS Glue tidak mendukung kompilasi kode asli di lingkungan kerja. Namun, pekerjaan AWS Glue berjalan dalam lingkungan Amazon-managed Linux. Anda mungkin dapat memberikan dependensi asli Anda dalam bentuk yang dikompilasi melalui file roda Python. Silakan merujuk ke tabel di atas untuk detail kompatibilitas versi AWS Glue.

penting

Menggunakan dependensi yang tidak kompatibel dapat mengakibatkan masalah runtime, terutama untuk pustaka dengan ekstensi asli yang harus sesuai dengan arsitektur lingkungan target dan pustaka sistem. Setiap versi AWS Glue berjalan pada versi Python tertentu dengan pustaka pra-instal dan konfigurasi sistem.