Menginstal dependensi Python - Amazon Managed Workflows for Apache Airflow (MWAA)

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

Menginstal dependensi Python

Ketergantungan Python adalah paket atau distribusi apa pun yang tidak termasuk dalam instalasi dasar Apache Airflow untuk versi Apache Airflow Anda di Amazon Managed Workflows untuk lingkungan Apache Airflow. Halaman ini menjelaskan langkah-langkah untuk menginstal dependensi Apache Airflow Python di lingkungan Amazon Anda menggunakan requirements.txt file di MWAA bucket Amazon S3 Anda.

Prasyarat

Anda akan memerlukan yang berikut ini sebelum Anda dapat menyelesaikan langkah-langkah di halaman ini.

  • Izin — AWS Akun Anda harus telah diberikan akses oleh administrator Anda ke kebijakan kontrol mazonMWAAFull ConsoleAccess akses A untuk lingkungan Anda. Selain itu, MWAA lingkungan Amazon Anda harus diizinkan oleh peran eksekusi Anda untuk mengakses AWS sumber daya yang digunakan oleh lingkungan Anda.

  • Akses — Jika Anda memerlukan akses ke repositori publik untuk menginstal dependensi langsung di server web, lingkungan Anda harus dikonfigurasi dengan akses server web jaringan publik. Untuk informasi selengkapnya, lihat Mode akses Apache Airflow.

  • Konfigurasi Amazon S3 - Bucket Amazon S3 yang digunakan untuk menyimpan plugin kustom DAGs Andaplugins.zip, dan dependensi Python harus dikonfigurasi dengan Akses Publik Diblokir dan requirements.txt Diaktifkan Versi.

Cara kerjanya

Di AmazonMWAA, Anda menginstal semua dependensi Python dengan mengunggah file ke bucket Amazon S3 requirements.txt Anda, lalu menentukan versi file di konsol Amazon MWAA setiap kali Anda memperbarui file. Amazon MWAA berjalan pip3 install -r requirements.txt untuk menginstal dependensi Python pada penjadwal Apache Airflow dan masing-masing pekerja.

Untuk menjalankan dependensi Python pada lingkungan Anda, Anda harus melakukan tiga hal:

  1. Buat requirements.txt file secara lokal.

  2. Unggah lokal requirements.txt ke bucket Amazon S3 Anda.

  3. Tentukan versi file ini di bidang file Persyaratan di MWAA konsol Amazon.

catatan

Jika ini adalah pertama kalinya Anda membuat dan mengunggah bucket Amazon S3 requirements.txt ke Anda, Anda juga perlu menentukan jalur ke file di konsol AmazonMWAA. Anda hanya perlu menyelesaikan langkah ini sekali.

Ikhtisar dependensi Python

Anda dapat menginstal tambahan Apache Airflow dan dependensi Python lainnya dari Python Package Index (PyPi.org), roda Python (), atau dependensi Python yang dihosting pada Repo .whl Compliant/-503 pribadi di lingkungan Anda. PyPi PEP

Ketergantungan Python lokasi dan batas ukuran

Penjadwal Aliran Udara Apache dan Pekerja mencari paket dalam requirements.txt file dan paket diinstal pada lingkungan di. /usr/local/airflow/.local/bin

  • Batas ukuran. Kami merekomendasikan requirements.txt file yang mereferensikan perpustakaan yang ukuran gabungannya kurang dari 1 GB. Semakin banyak perpustakaan yang MWAA perlu diinstal Amazon, semakin lama waktu startup di suatu lingkungan. Meskipun Amazon MWAA tidak membatasi ukuran pustaka yang diinstal secara eksplisit, jika dependensi tidak dapat diinstal dalam waktu sepuluh menit, layanan Fargate akan habis waktu dan mencoba mengembalikan lingkungan ke status stabil.

Membuat file requirements.txt

Langkah-langkah berikut menjelaskan langkah-langkah yang kami sarankan untuk membuat file requirements.txt secara lokal.

Langkah satu: Uji dependensi Python menggunakan utilitas Amazon MWAA CLI

  • Utilitas antarmuka baris perintah (CLI) mereplikasi Alur Kerja Terkelola Amazon untuk lingkungan Apache Airflow secara lokal.

  • CLIMembangun image container Docker secara lokal yang mirip dengan image produksi AmazonMWAA. Ini memungkinkan Anda menjalankan lingkungan Apache Airflow lokal untuk mengembangkan dan mengujiDAGs, plugin khusus, dan dependensi sebelum menerapkan ke Amazon. MWAA

  • Untuk menjalankanCLI, lihat aws-mwaa-local-runnerdi GitHub.

Langkah kedua: Buat requirements.txt

Bagian berikut menjelaskan cara menentukan dependensi Python dari Indeks Paket Python dalam sebuah file. requirements.txt

Apache Airflow v2
  1. Uji secara lokal. Tambahkan pustaka tambahan secara iteratif untuk menemukan kombinasi paket dan versinya yang tepat, sebelum membuat requirements.txt file. Untuk menjalankan MWAA CLI utilitas Amazon, lihat aws-mwaa-local-runnerdi GitHub.

  2. Tinjau paket tambahan Apache Airflow. Untuk melihat daftar paket yang diinstal untuk Apache Airflow v2 di AmazonMWAA, lihat Amazon MWAA local runner requirements.txt di situs web. GitHub

  3. Tambahkan pernyataan kendala. Tambahkan file kendala untuk lingkungan Apache Airflow v2 Anda di bagian atas file Anda. requirements.txt File batasan Apache Airflow menentukan versi penyedia yang tersedia pada saat rilis Apache Airflow.

    Dimulai dengan Apache Airflow v2.7.2, file persyaratan Anda harus menyertakan pernyataan. --constraint Jika Anda tidak memberikan kendala, Amazon MWAA akan menentukan satu untuk Anda untuk memastikan paket yang tercantum dalam persyaratan Anda kompatibel dengan versi Apache Airflow yang Anda gunakan.

    Dalam contoh berikut, ganti {environment-version} dengan nomor versi lingkungan Anda, dan {Python-version} dengan versi Python yang kompatibel dengan lingkungan Anda.

    Untuk informasi tentang versi Python yang kompatibel dengan lingkungan Apache Airflow Anda, lihat Apache Airflow Versions.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Jika file kendala menentukan bahwa xyz==1.0 paket tidak kompatibel dengan paket lain di lingkungan Anda, pip3 install akan gagal untuk mencegah pustaka yang tidak kompatibel diinstal ke lingkungan Anda. Jika instalasi gagal untuk paket apa pun, Anda dapat melihat log kesalahan untuk setiap komponen Apache Airflow (penjadwal, pekerja, dan server web) di aliran log yang sesuai di Log. CloudWatch Untuk informasi selengkapnya tentang jenis log, lihatMelihat log Aliran Udara di Amazon CloudWatch.

  4. Paket Apache Airflow. Tambahkan paket ekstra dan versi (==). Ini membantu mencegah paket dengan nama yang sama, tetapi versi yang berbeda, diinstal di lingkungan Anda.

    apache-airflow[package-extra]==2.5.1
  5. Pustaka Python. Tambahkan nama paket dan versi (==) di requirements.txt file Anda. Ini membantu mencegah pembaruan yang melanggar future PyPidari.org agar tidak diterapkan secara otomatis.

    library == version
    contoh Boto3 dan psycopg2-biner

    Contoh ini disediakan untuk tujuan demonstrasi. Pustaka biner boto dan psycopg2 disertakan dengan instalasi dasar Apache Airflow v2 dan tidak perlu ditentukan dalam file. requirements.txt

    boto3==1.17.54 boto==2.49.0 botocore==1.20.54 psycopg2-binary==2.8.6

    Jika paket ditentukan tanpa versi, Amazon MWAA menginstal versi terbaru paket dari PyPi.org. Versi ini mungkin bertentangan dengan paket lain di Andarequirements.txt.

Apache Airflow v1
  1. Uji secara lokal. Tambahkan pustaka tambahan secara iteratif untuk menemukan kombinasi paket dan versinya yang tepat, sebelum membuat requirements.txt file. Untuk menjalankan MWAA CLI utilitas Amazon, lihat aws-mwaa-local-runnerdi GitHub.

  2. Tinjau paket tambahan Aliran Udara. Tinjau daftar paket yang tersedia untuk Apache Airflow v1.10.12 di airflow/constraints-1.10.12/constraints-3.7.txt. https://raw.githubusercontent.com/apache/

  3. Tambahkan file kendala. Tambahkan file kendala untuk Apache Airflow v1.10.12 ke bagian atas file Anda. requirements.txt Jika file kendala menentukan bahwa xyz==1.0 paket tidak kompatibel dengan paket lain di lingkungan Anda, file tersebut pip3 install akan gagal mencegah pustaka yang tidak kompatibel diinstal ke lingkungan Anda.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-1.10.12/constraints-3.7.txt"
  4. Apache Airflow v1.10.12 paket. Tambahkan ekstra paket Airflow dan versi Apache Airflow v1.10.12 (). == Ini membantu mencegah paket dengan nama yang sama, tetapi versi yang berbeda, diinstal di lingkungan Anda.

    apache-airflow[package]==1.10.12
    contoh Shell Aman (SSH)

    Berikut contoh requirements.txt file menginstal SSH untuk Apache Airflow v1.10.12.

    apache-airflow[ssh]==1.10.12
  5. Pustaka Python. Tambahkan nama paket dan versi (==) di requirements.txt file Anda. Ini membantu mencegah pembaruan yang melanggar future PyPidari.org agar tidak diterapkan secara otomatis.

    library == version
    contoh Boto3

    Contoh requirements.txt file berikut menginstal perpustakaan Boto3 untuk Apache Airflow v1.10.12.

    boto3 == 1.17.4

    Jika paket ditentukan tanpa versi, Amazon MWAA menginstal versi terbaru paket dari PyPi.org. Versi ini mungkin bertentangan dengan paket lain di Andarequirements.txt.

Mengunggah requirements.txt ke Amazon S3

Anda dapat menggunakan konsol Amazon S3 atau AWS Command Line Interface (AWS CLI) untuk mengunggah requirements.txt file ke bucket Amazon S3 Anda.

Menggunakan AWS CLI

The AWS Command Line Interface (AWS CLI) adalah alat open source yang memungkinkan Anda berinteraksi dengan AWS layanan menggunakan perintah di shell baris perintah Anda. Untuk menyelesaikan langkah-langkah di halaman ini, Anda memerlukan yang berikut:

Untuk mengunggah menggunakan AWS CLI
  1. Gunakan perintah berikut untuk membuat daftar semua bucket Amazon S3 Anda.

    aws s3 ls
  2. Gunakan perintah berikut untuk mencantumkan file dan folder di bucket Amazon S3 untuk lingkungan Anda.

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. Perintah berikut mengunggah requirements.txt file ke bucket Amazon S3.

    aws s3 cp requirements.txt s3://YOUR_S3_BUCKET_NAME/requirements.txt

Menggunakan konsol Amazon S3

Konsol Amazon S3 adalah antarmuka pengguna berbasis web yang memungkinkan Anda membuat dan mengelola sumber daya di bucket Amazon S3 Anda.

Untuk mengunggah menggunakan konsol Amazon S3
  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih tautan bucket S3 di DAGkode di panel S3 untuk membuka bucket penyimpanan Anda di konsol Amazon S3.

  4. Pilih Unggah.

  5. Pilih Tambahkan file.

  6. Pilih salinan lokal Andarequirements.txt, pilih Unggah.

Menginstal dependensi Python di lingkungan Anda

Bagian ini menjelaskan cara menginstal dependensi yang Anda unggah ke bucket Amazon S3 Anda dengan menentukan jalur ke file requirements.txt, dan menentukan versi file requirements.txt setiap kali diperbarui.

Menentukan jalur ke MWAA konsol requirements.txt Amazon (pertama kali)

Jika ini adalah pertama kalinya Anda membuat dan mengunggah bucket Amazon S3 requirements.txt ke Anda, Anda juga perlu menentukan jalur ke file di konsol AmazonMWAA. Anda hanya perlu menyelesaikan langkah ini sekali.

  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih Edit.

  4. Pada DAGkode di panel Amazon S3, pilih Jelajahi S3 di sebelah berkas Persyaratan - bidang opsional.

  5. Pilih requirements.txt file di bucket Amazon S3 Anda.

  6. Pilih Tutup.

  7. Pilih Berikutnya, Perbarui lingkungan.

Anda dapat mulai menggunakan paket baru segera setelah lingkungan Anda selesai memperbarui.

Menentukan requirements.txt versi di konsol Amazon MWAA

Anda perlu menentukan versi requirements.txt file Anda di MWAA konsol Amazon setiap kali Anda mengunggah versi baru Anda requirements.txt di bucket Amazon S3 Anda.

  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih Edit.

  4. Pada DAGkode di panel Amazon S3, pilih requirements.txt versi dalam daftar dropdown.

  5. Pilih Berikutnya, Perbarui lingkungan.

Anda dapat mulai menggunakan paket baru segera setelah lingkungan Anda selesai memperbarui.

Melihat log untuk Anda requirements.txt

Anda dapat melihat log Apache Airflow untuk Scheduler yang menjadwalkan alur kerja Anda dan mengurai folder Anda. dags Langkah-langkah berikut menjelaskan cara membuka grup log untuk Scheduler di MWAA konsol Amazon, dan melihat log Apache Airflow di konsol Log. CloudWatch

Untuk melihat log untuk requirements.txt
  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih grup log penjadwal aliran udara di panel Pemantauan.

  4. Pilih requirements_install_ip log masuk Aliran log.

  5. Anda akan melihat daftar paket yang diinstal pada lingkungan di/usr/local/airflow/.local/bin. Sebagai contoh:

    Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1)) Downloading https://files.pythonhosted.org/packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))
  6. Tinjau daftar paket dan apakah salah satu dari ini mengalami kesalahan selama instalasi. Jika terjadi kesalahan, Anda mungkin melihat kesalahan yang mirip dengan yang berikut:

    2021-03-05T14:34:42.731-07:00 No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4)) No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4))

Apa selanjutnya?

  • UjiDAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub