Pemecahan masalah: CloudWatch Log dan kesalahan CloudTrail - 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: CloudWatch Log dan kesalahan CloudTrail

Topik di halaman ini berisi resolusi untuk Amazon CloudWatch Logs dan AWS CloudTrail kesalahan yang mungkin Anda temui di lingkungan Alur Kerja Terkelola Amazon untuk Apache Airflow.

Log

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

Saya tidak dapat melihat log tugas saya, atau saya menerima kesalahan 'Membaca log jarak jauh dari Cloudwatch log_group'

Amazon MWAA telah mengonfigurasi Apache Airflow untuk membaca dan menulis log langsung dari dan ke Amazon Logs. CloudWatch Jika seorang pekerja gagal memulai tugas, atau gagal menulis log apa pun, Anda akan melihat 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 selengkapnya, lihat Melihat log Aliran Udara di Amazon CloudWatch.

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

    3. Verifikasi bahwa operator atau tugas Anda berfungsi 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 hilangkan impor hingga Anda menemukan dependensi yang menyebabkan masalah. Sebaiknya uji dependensi Python Anda menggunakan alat pelari lokal Amazon MWAA.

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 ditunjukkan 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 melihat kesalahan ResourceAlreadyExistsException '' 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 watchtower perpustakaan yang digunakan Amazon MWAA untuk berkomunikasi dengan CloudWatch versi yang lebih lama. Kami merekomendasikan langkah-langkah berikut:

  • Tambahkan pustaka berikut ke requirements.txt

    watchtower==1.0.6

Saya melihat 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 template AWS CloudFormation yang sama, Anda perlu menambahkan bagian DependsOn dalam template Anda. AWS CloudFormation Dua sumber daya (Lingkungan MWAA dan Kebijakan Eksekusi MWAA) memiliki ketergantungan dalam. AWS CloudFormation Kami merekomendasikan langkah-langkah berikut:

  • Tambahkan DependsOn pernyataan berikut ke AWS 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, lihat Tutorial mulai cepat untuk Alur Kerja Terkelola Amazon untuk Apache Airflow.

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

Saya melihat psycopg2 'server menutup koneksi secara tak terduga' di log Scheduler saya

Jika Anda melihat kesalahan yang mirip dengan berikut ini, Penjadwal Aliran Udara Apache 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 memungkinkan Anda menentukan hingga 5 Penjadwal.

Saya melihat 'Executor melaporkan instance tugas %s selesai (%s) meskipun tugas mengatakan %s' dalam log pemrosesan DAG saya

Jika Anda melihat 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 salah satu tugas Aliran Udara, untuk mencegah tugas macet 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 asinkron. Ini memanggil aktivitas pada sistem eksternal, dan jajak pendapat Sensor Aliran Udara Apache untuk melihat kapan selesai. Jika Sensor gagal, sensor dapat dicoba ulang dengan aman tanpa memengaruhi fungsionalitas Operator.

Saya melihat '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 melihat 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, yang hanya kompatibel dengan apache-airflow-providers-databricksAirflow 2.1+.

Kami merekomendasikan langkah-langkah berikut:

  1. Jika Anda menggunakan Apache Airflow v2.0.2, ubah file dan tambahkan. requirements.txt apache-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 on. aws-mwaa-local-runner GitHub