Pemecahan masalah: DAGs, Operator, Koneksi, dan masalah lain di Apache Airflow v1 - 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.

Pemecahan masalah: DAGs, Operator, Koneksi, dan masalah lain di Apache Airflow v1

Topik di halaman ini berisi resolusi untuk Apache Airflow v1.10.12 dependensi Python, plugin khusus,, Operator, Koneksi, tugas, dan masalah server Web yang mungkin Anda temui di lingkungan Alur Kerja Terkelola Amazon untuk Apache Airflow. DAGs

Memperbarui requirements.txt

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat memperbaruirequirements.txt.

Menambahkan apache-airflow-providers-amazon menyebabkan lingkungan saya gagal

apache-airflow-providers-xyzhanya kompatibel dengan Apache Airflow v2. apache-airflow-backport-providers-xyzkompatibel dengan Apache Airflow 1.10.12.

DAG rusak

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menjalankan DAGs.

Saya menerima kesalahan 'Broken DAG' saat menggunakan operator Amazon DynamoDB

Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Tambahkan paket berikut ke paket Andarequirements.txt.

    boto
  3. Jelajahi cara untuk menentukan dependensi Python dalam file, lihat. requirements.txt Mengelola dependensi Python di requirements.txt

Saya menerima kesalahan 'Broken DAG: No module named psycopg2'

Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Tambahkan yang berikut ini ke requirements.txt versi Apache Airflow Anda. Misalnya:

    apache-airflow[postgres]==1.10.12
  3. Jelajahi cara untuk menentukan dependensi Python dalam file, lihat. requirements.txt Mengelola dependensi Python di requirements.txt

Saya menerima kesalahan 'Broken DAG' saat menggunakan operator Slack

Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Tambahkan paket berikut ke Anda requirements.txt dan tentukan versi Apache Airflow Anda. Misalnya:

    apache-airflow[slack]==1.10.12
  3. Jelajahi cara untuk menentukan dependensi Python dalam file, lihat. requirements.txt Mengelola dependensi Python di requirements.txt

Saya menerima berbagai kesalahan saat menginstal Google/GCP/BigQuery

Amazon MWAA menggunakan Amazon Linux yang memerlukan versi tertentu dari pustaka Cython dan kriptografi. Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Tambahkan paket berikut ke paket Andarequirements.txt.

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow-backport-providers-amazon[google]
  3. Jika Anda tidak menggunakan penyedia backport, Anda dapat menggunakan:

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow[gcp]==1.10.12
  4. Jelajahi cara untuk menentukan dependensi Python dalam file, lihat. requirements.txt Mengelola dependensi Python di requirements.txt

Saya menerima kesalahan 'Broken DAG: No module named Cython'

Amazon MWAA menggunakan Amazon Linux yang membutuhkan versi Cython tertentu. Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Tambahkan paket berikut ke paket Andarequirements.txt.

    cython==0.29.21
  3. Pustaka Cython memiliki berbagai versi dependensi pip yang diperlukan. Misalnya, menggunakan awswrangler==2.4.0 requirespyarrow<3.1.0,>=2.0.0, jadi pip3 mencoba menginstal pyarrow==3.0.0 yang menyebabkan kesalahan Broken DAG. Kami merekomendasikan untuk menentukan eksplisit versi tertua yang dapat diterima. Misalnya, jika Anda menentukan nilai minimum pyarrow==2.0.0 sebelumnya awswrangler==2.4.0 maka kesalahan hilang, dan requirements.txt menginstal dengan benar. Persyaratan akhir akan terlihat seperti ini:

    cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
  4. Jelajahi cara untuk menentukan dependensi Python dalam file, lihat. requirements.txt Mengelola dependensi Python di requirements.txt

Operator

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menggunakan Operator.

Saya menerima kesalahan menggunakan BigQuery operator

Amazon MWAA tidak mendukung operator dengan ekstensi UI. Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Solusinya adalah mengganti ekstensi dengan menambahkan baris di DAG untuk disetel <operator name>.operator_extra_links = None setelah mengimpor operator masalah. Misalnya:

    from airflow.contrib.operators.bigquery_operator import BigQueryOperator BigQueryOperator.operator_extra_links = None
  3. Anda dapat menggunakan pendekatan ini untuk semua DAGs dengan menambahkan hal di atas ke plugin. Sebagai contoh, lihat Membuat plugin khusus untuk Apache Airflow PythonVirtualenvOperator.

Koneksi

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menggunakan koneksi Apache Airflow, atau menggunakan database lain AWS .

Saya tidak dapat terhubung ke Snowflake

Kami merekomendasikan langkah-langkah berikut:

  1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

  2. Tambahkan entri berikut ke requirements.txt untuk lingkungan Anda.

    asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
  3. Tambahkan impor berikut ke DAG Anda:

    from airflow.contrib.hooks.snowflake_hook import SnowflakeHook from airflow.contrib.operators.snowflake_operator import SnowflakeOperator

Pastikan objek koneksi Apache Airflow menyertakan pasangan kunci-nilai berikut:

  1. Id Conn: snowflake_conn

  2. Jenis Conn: Kepingan Salju

  3. Tuan rumah:<my account>. <my region if not us-west-2>.snowflakecomputing.com

  4. Skema: <my schema>

  5. Masuk: <my user name>

  6. Kata sandi: ********

  7. Pelabuhan: <port, if any>

  8. Ekstra:

    { "account": "<my account>", "warehouse": "<my warehouse>", "database": "<my database>", "region": "<my region if not using us-west-2 otherwise omit this line>" }

Misalnya:

>>> import json >>> from airflow.models.connection import Connection >>> myconn = Connection( ... conn_id='snowflake_conn', ... conn_type='Snowflake', ... host='YOUR_ACCOUNT.YOUR_REGION.snowflakecomputing.com', ... schema='YOUR_SCHEMA' ... login='YOUR_USERNAME', ... password='YOUR_PASSWORD', ... port='YOUR_PORT' ... extra=json.dumps(dict(account='YOUR_ACCOUNT', warehouse='YOUR_WAREHOUSE', database='YOUR_DB_OPTION', region='YOUR_REGION')), ... )

Saya tidak dapat terhubung ke Secrets Manager

Kami merekomendasikan langkah-langkah berikut:

  1. Pelajari cara membuat kunci rahasia untuk koneksi Apache Airflow dan variabel di dalamnya. Mengkonfigurasi koneksi Apache Airflow menggunakan rahasia AWS Secrets Manager

  2. Pelajari cara menggunakan kunci rahasia untuk variabel Apache Airflow (test-variable) di. Menggunakan kunci rahasia AWS Secrets Manager untuk variabel Apache Airflow

  3. Pelajari cara menggunakan kunci rahasia untuk koneksi Apache Airflow (myconn) di. Menggunakan kunci rahasia AWS Secrets Manager untuk koneksi Apache Airflow

<DB-identifier-name>Saya tidak dapat terhubung ke server MySQL saya di '.cluster-id. <region>.rds.amazonaws.com'

Grup keamanan Amazon MWAA dan grup keamanan RDS memerlukan aturan masuk untuk memungkinkan lalu lintas ke dan dari satu sama lain. Kami merekomendasikan langkah-langkah berikut:

  1. Ubah grup keamanan RDS untuk mengizinkan semua lalu lintas dari grup keamanan VPC Amazon MWAA.

  2. Ubah grup keamanan VPC Amazon MWAA untuk memungkinkan semua lalu lintas dari grup keamanan RDS.

  3. Jalankan kembali tugas Anda dan verifikasi apakah kueri SQL berhasil dengan memeriksa log Apache Airflow di Log. CloudWatch

Server web

Topik berikut menjelaskan kesalahan yang mungkin Anda terima untuk server Web Apache Airflow Anda di Amazon MWAA.

Saya menggunakan BigQueryOperator dan itu menyebabkan server web saya mogok

Kami merekomendasikan langkah-langkah berikut:

  1. Operator Apache Airflow seperti BigQueryOperator dan QuboleOperator yang berisi operator_extra_links dapat menyebabkan server web Apache Airflow Anda mogok. Operator ini mencoba memuat kode ke server web Anda, yang tidak diizinkan karena alasan keamanan. Kami menyarankan untuk menambal operator di DAG Anda dengan menambahkan kode berikut setelah pernyataan impor Anda:

    BigQueryOperator.operator_extra_links = None
  2. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. aws-mwaa-local-runner GitHub

Saya melihat kesalahan 5xx saat mengakses server web

Kami merekomendasikan langkah-langkah berikut:

  1. Periksa opsi konfigurasi Apache Airflow. Verifikasi bahwa pasangan nilai kunci yang Anda tentukan sebagai opsi konfigurasi Apache Airflow, seperti AWS Secrets Manager, telah dikonfigurasi dengan benar. Untuk mempelajari selengkapnya, lihat Saya tidak dapat terhubung ke Secrets Manager.

  2. Periksarequirements.txt. Verifikasi paket “ekstra” Aliran Udara dan pustaka lain yang tercantum dalam Anda requirements.txt kompatibel dengan versi Apache Airflow Anda.

  3. Jelajahi cara untuk menentukan dependensi Python dalam file, lihat. requirements.txt Mengelola dependensi Python di requirements.txt

Saya melihat kesalahan 'Penjadwal tampaknya tidak berjalan'

Jika penjadwal tampaknya tidak berjalan, atau “detak jantung” terakhir diterima beberapa jam yang lalu, Anda DAGs mungkin tidak muncul di Apache Airflow, dan tugas baru tidak akan dijadwalkan.

Kami merekomendasikan langkah-langkah berikut:

  1. Konfirmasikan bahwa grup keamanan VPC Anda mengizinkan akses masuk ke port. 5432 Port ini diperlukan untuk terhubung ke database metadata Amazon Aurora PostgreSQL untuk lingkungan Anda. Setelah aturan ini ditambahkan, berikan Amazon MWAA beberapa menit, dan kesalahan akan hilang. Untuk mempelajari selengkapnya, lihat Keamanan di VPC Anda di Amazon MWAA.

    catatan
  2. Jika scheduler tidak berjalan, mungkin karena sejumlah faktor seperti kegagalan instalasi dependensi, atau penjadwal kelebihan beban. Konfirmasikan bahwa DAGs, plugin, dan persyaratan Anda berfungsi dengan benar dengan melihat grup log yang sesuai di CloudWatch Log. Untuk mempelajari selengkapnya, lihat Pemantauan dan metrik untuk Alur Kerja Terkelola Amazon untuk Apache Airflow.

Tugas

Topik berikut menjelaskan kesalahan yang mungkin Anda terima untuk tugas Apache Airflow di suatu lingkungan.

Saya melihat tugas saya macet atau tidak selesai

Jika tugas Apache Airflow Anda “macet” atau tidak selesai, kami merekomendasikan langkah-langkah berikut:

  1. Mungkin ada sejumlah besar yang DAGs didefinisikan. Kurangi jumlah DAGs dan lakukan pembaruan lingkungan (seperti mengubah level log) untuk memaksa reset.

    1. Aliran udara DAGs mem-parsing apakah mereka diaktifkan atau tidak. Jika Anda menggunakan lebih dari 50% kapasitas lingkungan Anda, Anda dapat mulai membanjiri Penjadwal Aliran Udara Apache. Hal ini menyebabkan Total Parse Time yang besar dalam CloudWatch Metrik atau waktu pemrosesan DAG yang lama di CloudWatch Log. Ada cara lain untuk mengoptimalkan konfigurasi Apache Airflow yang berada di luar cakupan panduan ini.

    2. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihatPenyetelan kinerja untuk Apache Airflow di Amazon MWAA.

  2. Mungkin ada banyak tugas dalam antrian. Ini sering muncul sebagai jumlah tugas yang besar—dan berkembang—dalam status “Tidak Ada”, atau sebagai jumlah besar dalam Tugas Antrian dan/atau Tugas yang Tertunda. CloudWatch Ini dapat terjadi karena alasan berikut:

    1. Jika ada lebih banyak tugas untuk dijalankan daripada lingkungan memiliki kapasitas untuk dijalankan, dan/atau sejumlah besar tugas yang antri sebelum penskalaan otomatis memiliki waktu untuk mendeteksi tugas dan menyebarkan Pekerja tambahan.

    2. Jika ada lebih banyak tugas untuk dijalankan daripada lingkungan yang memiliki kapasitas untuk dijalankan, kami sarankan untuk mengurangi jumlah tugas yang Anda DAGs jalankan secara bersamaan, dan/atau meningkatkan Pekerja Aliran Udara Apache minimum.

    3. Jika ada sejumlah besar tugas yang antri sebelum penskalaan otomatis memiliki waktu untuk mendeteksi dan menyebarkan pekerja tambahan, kami merekomendasikan penyebaran tugas yang mengejutkan dan/atau meningkatkan Pekerja Aliran Udara Apache minimum.

    4. Anda dapat menggunakan perintah update-environment di AWS Command Line Interface (AWS CLI) untuk mengubah jumlah minimum atau maksimum Pekerja yang berjalan di lingkungan Anda.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
    5. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihatPenyetelan kinerja untuk Apache Airflow di Amazon MWAA.

  3. Jika tugas Anda macet dalam status “berjalan”, Anda juga dapat menghapus tugas atau menandainya sebagai berhasil atau gagal. Hal ini memungkinkan komponen penskalaan otomatis untuk lingkungan Anda untuk mengurangi jumlah pekerja yang berjalan di lingkungan Anda. Gambar berikut menunjukkan contoh tugas yang terdampar.

    Ini adalah gambar dengan tugas yang terdampar.
    1. Pilih lingkaran untuk tugas yang terdampar, lalu pilih Hapus (seperti yang ditunjukkan). Hal ini memungkinkan Amazon MWAA untuk menurunkan skala pekerja; jika tidak, Amazon MWAA tidak dapat menentukan mana yang DAGs diaktifkan atau dinonaktifkan, dan tidak dapat menurunkan skala, jika masih ada tugas antrian.

      Tindakan Aliran Udara Apache
  4. Pelajari lebih lanjut tentang siklus hidup tugas Apache Airflow di Concepts dalam panduan referensi Apache Airflow.

CLI

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menjalankan perintah CLI Aliran Udara di. AWS Command Line Interface

Saya melihat kesalahan '503' saat memicu DAG di CLI

CLI Airflow berjalan di server Web Apache Airflow, yang memiliki konkurensi terbatas. Biasanya maksimal 4 perintah CLI dapat berjalan secara bersamaan.