View a markdown version of this page

Pemecahan masalah: CloudWatch Log dan CloudTrail kesalahan - Amazon Managed Workflows for Apache Airflow

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

Pemecahan masalah: CloudWatch Log dan CloudTrail kesalahan

Topik di halaman ini berisi resolusi Amazon CloudWatch Log dan AWS CloudTrail kesalahan yang dapat Anda temui di lingkungan Amazon Managed Workflow untuk Apache Airflow.

Beberapa catatan

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat mengakses log Apache Airflow.

Saya tidak dapat menemukan log tugas saya, atau saya menerima Re ading remote log dari kesalahan Cloudwatch log_group

Amazon MWAA telah mengonfigurasi Apache Airflow untuk membaca dan menulis log langsung dari dan ke Amazon CloudWatch Log. Jika pekerja gagal memulai tugas, atau gagal menulis log apa pun, Anda akan merujuk pada kesalahan:

*** Reading remote log from Cloudwatch log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/timestamp/n.log.Could not read remote logs from log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/time/n.log.
  • Kami merekomendasikan langkah-langkah berikut:

    1. Verifikasi bahwa Anda telah mengaktifkan log tugas di INFO tingkat untuk lingkungan Anda. Untuk informasi lebih lanjut, lihatMengakses log Aliran Udara di Amazon CloudWatch.

    2. Verifikasi bahwa peran eksekusi lingkungan memiliki kebijakan izin yang benar.

    3. Verifikasi bahwa operator atau tugas Anda bekerja dengan benar, memiliki sumber daya yang cukup untuk mengurai DAG, dan memiliki pustaka Python yang sesuai untuk dimuat. Untuk memverifikasi apakah Anda memiliki dependensi yang benar, coba hapus impor sampai Anda menemukan salah satu yang menyebabkan masalah. Kami menyarankan untuk menguji dependensi Python Anda menggunakan aw s-mwaa-docker-images.

Tugas gagal tanpa log

Jika tugas gagal dalam alur kerja dan Anda tidak dapat menemukan log apa pun untuk tugas yang gagal, periksa apakah Anda menyetel queue parameter dalam argumen default Anda, seperti yang tercantum di bawah ini.

from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago # Setting queue argument to default. default_args = { "start_date": days_ago(1), "queue": "default" } with DAG(dag_id="any_command_dag", schedule_interval=None, catchup=False, default_args=default_args) as dag: cli_command = BashOperator( task_id="bash_command", bash_command="{{ dag_run.conf['command'] }}" )

Untuk mengatasi masalah ini, hapus queue dari kode Anda, dan panggil DAG lagi.

Saya mendapatkan ResourceAlreadyExistsException kesalahan di CloudTrail

"errorCode": "ResourceAlreadyExistsException", "errorMessage": "The specified log stream already exists", "requestParameters": { "logGroupName": "airflow-MyAirflowEnvironment-DAGProcessing", "logStreamName": "scheduler_cross-account-eks.py.log" }

Persyaratan Python tertentu seperti apache-airflow-backport-providers-amazon memutar kembali pust watchtower aka yang digunakan Amazon MWAA untuk berkomunikasi dengan CloudWatch versi yang lebih lama. Kami merekomendasikan langkah-langkah berikut:

  • Tambahkan perpustakaan berikut ke requirements.txt

    watchtower==1.0.6

Saya mendapatkan kesalahan permintaan tidak valid di CloudTrail

Invalid request provided: Provided role does not have sufficient permissions for s3 location airflow-xxx-xxx/dags

Jika Anda membuat lingkungan Amazon MWAA dan bucket Amazon S3 menggunakan CloudFormation template yang sama, Anda perlu menambahkan DependsOn bagian dalam CloudFormation template Anda. Kedua sumber daya (Lingkungan MWAA dan Kebijakan Eksekusi MWAA) memiliki ketergantungan pada. CloudFormation Kami merekomendasikan langkah-langkah berikut:

  • Tambahkan DependsOn pernyataan berikut ke CloudFormation template Anda.

    ... MaxWorkers: 5 NetworkConfiguration: SecurityGroupIds: - !GetAtt SecurityGroup.GroupId SubnetIds: !Ref subnetIds WebserverAccessMode: PUBLIC_ONLY DependsOn: MwaaExecutionPolicy MwaaExecutionPolicy: Type: AWS::IAM::ManagedPolicy Properties: Roles: - !Ref MwaaExecutionRole PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: airflow:PublishMetrics Resource: ...

    Sebagai contoh, lihatTutorial awal cepat untuk Alur Kerja Terkelola Amazon untuk Apache Airflow.

Saya mendapatkan Tidak dapat menemukan pustaka Klien Oracle 64-bit: “libclntsh.so: tidak dapat membuka file objek bersama: Tidak ada file atau direktori seperti itu di log Apache Airflow

Saya mendapatkan psycopg2 'server menutup koneksi secara tak terduga 'di log penjadwal saya

Jika Anda mendapatkan kesalahan yang mirip dengan berikut ini, penjadwal Apache Airflow Anda mungkin kehabisan sumber daya.

2021-06-14T10:20:24.581-05:00 sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) server closed the connection unexpectedly 2021-06-14T10:20:24.633-05:00 This probably means the server terminated abnormally 2021-06-14T10:20:24.686-05:00 before or while processing the request.

Kami merekomendasikan langkah-langkah berikut:

  • Pertimbangkan untuk meningkatkan ke Apache Airflow v2.0.2, yang dapat Anda gunakan untuk menentukan hingga 5 penjadwal.

Saya mendapatkan eksekutor melaporkan instance tugas %s selesai (%s) meskipun tugas mengatakan itu %s di log pemrosesan DAG saya

Jika Anda mendapatkan kesalahan yang mirip dengan berikut ini, tugas Anda yang berjalan lama mungkin telah mencapai batas waktu tugas di Amazon MWAA. Amazon MWAA memiliki batas 12 jam untuk setiap tugas Airflow, untuk mencegah tugas terjebak dalam antrian dan memblokir aktivitas seperti penskalaan otomatis.

Executor reports task instance %s finished (%s) although the task says its %s. (Info: %s) Was the task killed externally

Kami merekomendasikan langkah-langkah berikut:

  • Pertimbangkan untuk memecah tugas menjadi beberapa tugas yang berjalan lebih pendek. Aliran udara biasanya memiliki model di mana operator tidak sinkron. Ini memanggil aktivitas pada sistem eksternal, dan polling Apache Airflow Sensors untuk memeriksa kapan selesai. Jika Sensor gagal, sensor dapat dicoba ulang dengan aman tanpa mempengaruhi fungsionalitas Operator.

Log pemicu tidak muncul di Aliran udara UI

Jika log pemicu tidak muncul di UI Apache Airflow, peran eksekusi Anda mungkin kehilangan izin. logs:DescribeLogStreams Tanpa izin ini, Amazon MWAA tidak dapat menemukan aliran log pemicu. Tidak ada kesalahan yang muncul di log, yang dapat membuat masalah ini sulit diidentifikasi.

Tambahkan logs:DescribeLogStreams ke peran eksekusi Anda. Lingkup izin ke grup log lingkungan Anda ARN. Untuk informasi selengkapnya, lihat Peran eksekusi Amazon MWAA.

catatan

Masalah ini memengaruhi lingkungan Anda jika Anda menggunakan Apache Airflow versi 3.x dengan operator yang dapat ditunda. Jika Anda membuat peran eksekusi di konsol sebelum peran default menyertakan izin ini, tambahkan secara manual.

Saya mendapatkan Tidak dapat membaca log jarak jauh dari log_group: airflow-* {*EnvironmentName} -Task log_stream: * {*DAG_ID} /* {*TASK_ID} /* {*time} /* {*n} .log.di log tugas saya

Jika Anda mendapatkan kesalahan yang mirip dengan berikut ini, peran eksekusi untuk lingkungan Anda mungkin tidak berisi kebijakan izin untuk membuat aliran log untuk log tugas.

Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.

Kami merekomendasikan langkah-langkah berikut:

Anda mungkin juga telah menentukan paket penyedia dalam requirements.txt file Anda yang tidak kompatibel dengan versi Apache Airflow Anda. Misalnya, jika Anda menggunakan Apache Airflow v2.0.2, Anda mungkin telah menentukan paket, seperti paket apache-airflow-providers-databricks, yang hanya kompatibel dengan Air flow 2.1 +.

Kami merekomendasikan langkah-langkah berikut:

  1. Jika Anda menggunakan Apache Airflow v2.0.2, ubah requirements.txt file dan tambahkanapache-airflow[databricks]. Ini menginstal versi yang benar dari paket Databricks yang kompatibel dengan Apache Airflow v2.0.2.

  2. Uji DAG, plugin khusus, dan dependensi Python Anda secara lokal menggunakan aws- mwaa-docker-images on. GitHub