

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 lainnya
<a name="t-apache-airflow-202"></a>

Topik di halaman ini menjelaskan resolusi untuk dependensi Apache Airflow v2 dan v3 Python, plugin DAGs khusus,, Operator, Koneksi, tugas, dan masalah server web yang dapat Anda temui di lingkungan Alur Kerja Terkelola Amazon untuk Apache Airflow.

**Contents**
+ [Koneksi](#troubleshooting-conn-202)
  + [Saya tidak dapat terhubung ke Secrets Manager](#access-secrets-manager)
  + [Bagaimana cara mengonfigurasi kondisi pengelola `secretsmanager:ResourceTag/<tag-key>` rahasia atau pembatasan sumber daya dalam kebijakan peran eksekusi saya?](#access-secrets-manager-condition-keys)
  + [Saya tidak dapat terhubung ke Snowflake](#missing-snowflake)
  + [Saya tidak dapat menemukan koneksi saya di Airflow UI](#connection-type-missing)
+ [Server Web](#troubleshooting-webserver-202)
  + [Saya mendapatkan kesalahan 5xx saat mengakses server web](#5xx-webserver-202)
  + [Saya mendapatkan `The scheduler does not seem to be running` kesalahan](#error-scheduler-202)
+ [Tugas](#troubleshooting-tasks-202)
  + [Saya membuat tugas saya macet atau tidak selesai](#stranded-tasks-202)
  + [Saya mendapatkan kegagalan tugas tanpa log di Airflow v3](#failed-task-no-log)
+ [CLI](#troubleshooting-cli-202)
  + [Saya mendapatkan kesalahan '503' saat memicu DAG di CLI](#cli-toomany-202)
  + [Mengapa perintah `dags backfill` Apache Airflow CLI gagal? Apakah ada solusinya?](#troubleshooting-cli-backfill)
+ [Operator](#troubleshooting-operators-202)
  + [Saya menerima `PermissionError: [Errno 13] Permission denied` kesalahan menggunakan operator S3Transform](#op-s3-transform)

## Koneksi
<a name="troubleshooting-conn-202"></a>

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

### Saya tidak dapat terhubung ke Secrets Manager
<a name="access-secrets-manager"></a>

Kami merekomendasikan langkah-langkah berikut:

1. Pelajari cara membuat kunci rahasia untuk koneksi dan variabel Apache Airflow Anda. [Mengkonfigurasi koneksi Apache Airflow menggunakan rahasia AWS Secrets Manager](connections-secrets-manager.md)

1. Pelajari cara menggunakan kunci rahasia untuk variabel `test-variable` Apache Airflow () di. [Menggunakan kunci rahasia AWS Secrets Manager untuk variabel Apache Airflow](samples-secrets-manager-var.md)

1. Pelajari cara menggunakan kunci rahasia untuk koneksi `myconn` Apache Airflow () di. [Menggunakan kunci rahasia AWS Secrets Manager untuk koneksi Apache Airflow](samples-secrets-manager.md)

### Bagaimana cara mengonfigurasi kondisi pengelola `secretsmanager:ResourceTag/<tag-key>` rahasia atau pembatasan sumber daya dalam kebijakan peran eksekusi saya?
<a name="access-secrets-manager-condition-keys"></a>

**catatan**  
Berlaku untuk Apache Airflow versi 2.0 dan sebelumnya.

Saat ini, Anda tidak dapat membatasi akses ke rahasia Secrets Manager dengan menggunakan kunci kondisi atau batasan sumber daya lainnya dalam peran eksekusi lingkungan Anda, karena masalah yang diketahui di Apache Airflow.

### Saya tidak dapat terhubung ke Snowflake
<a name="missing-snowflake"></a>

Kami merekomendasikan langkah-langkah berikut:

1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

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

   ```
   apache-airflow-providers-snowflake==1.3.0
   ```

1. Tambahkan impor berikut ke DAG Anda:

   ```
   from airflow.providers.snowflake.operators.snowflake import SnowflakeOperator
   ```

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

1. **Id Conn:** snowflake\$1conn

1. **Jenis Conn:** Kepingan Salju

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

1. **Skema:** <my schema>

1. **Masuk:** <my user name>

1. **Kata sandi:** \$1\$1\$1\$1\$1\$1\$1\$1

1. **Pelabuhan:** <port, if any>

1. **Ekstra:**

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

Contoh:

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

### Saya tidak dapat menemukan koneksi saya di Airflow UI
<a name="connection-type-missing"></a>

Apache Airflow menyediakan template koneksi di Apache Airflow UI. Ini menggunakan ini untuk menghasilkan string URI koneksi, terlepas dari jenis koneksi. Jika template koneksi tidak tersedia di Apache Airflow UI, template koneksi alternatif dapat digunakan untuk menghasilkan string URI koneksi, seperti menggunakan template koneksi HTTP.

Kami merekomendasikan langkah-langkah berikut:

1. Akses jenis koneksi yang disediakan Amazon MWAA di Apache Airflow UI di. [Paket penyedia Apache Airflow diinstal di lingkungan Amazon MWAA](connections-packages.md)

1. Akses perintah untuk membuat koneksi Apache Airflow di CLI di. [Referensi perintah CLI Apache Airflow](airflow-cli-command-reference.md)

1. Pelajari cara menggunakan templat koneksi di Apache Airflow UI secara bergantian untuk jenis koneksi yang tidak tersedia di Apache Airflow UI di Amazon MWAA di. [Ikhtisar jenis koneksi](manage-connection-types.md)

## Server Web
<a name="troubleshooting-webserver-202"></a>

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

### Saya mendapatkan kesalahan 5xx saat mengakses server web
<a name="5xx-webserver-202"></a>

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 lebih lanjut, lihat[Saya tidak dapat terhubung ke Secrets Manager](#access-secrets-manager).

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

1. Jelajahi cara untuk menentukan dependensi Python dalam `requirements.txt` file, lihat. [Mengelola dependensi Python di requirements.txt](best-practices-dependencies.md)

### Saya mendapatkan `The scheduler does not seem to be running` kesalahan
<a name="error-scheduler-202"></a>

Jika penjadwal tampaknya tidak berjalan, atau “detak jantung” terakhir diterima beberapa jam yang lalu, Anda DAGs mungkin tidak terdaftar 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 dapat hilang. Untuk mempelajari lebih lanjut, lihat[Keamanan di VPC Anda di Amazon MWAA](vpc-security.md).
**catatan**  
[Metadatabase Aurora PostgreSQL adalah bagian dari arsitektur layanan Amazon MWAA dan tidak tersedia di Anda.](what-is-mwaa.md#architecture-mwaa) Akun AWS
Kesalahan terkait database biasanya merupakan gejala kegagalan penjadwal dan bukan akar penyebabnya.

1. Jika scheduler tidak berjalan, mungkin karena sejumlah faktor seperti [kegagalan instalasi dependensi](best-practices-dependencies.md), atau penjadwal [kelebihan beban](best-practices-tuning.md). Konfirmasikan bahwa DAGs, plugin, dan persyaratan Anda berfungsi dengan benar dengan mengakses grup log yang sesuai di CloudWatch Log. Untuk mempelajari lebih lanjut, lihat[Pemantauan dan metrik untuk Alur Kerja Terkelola Amazon untuk Apache Airflow](cw-metrics.md).

## Tugas
<a name="troubleshooting-tasks-202"></a>

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

### Saya membuat tugas saya macet atau tidak selesai
<a name="stranded-tasks-202"></a>

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 mungkin mulai membanjiri penjadwal Apache Airflow. 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.

   1. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihat[Penyetelan kinerja untuk Apache Airflow di Amazon MWAA](best-practices-tuning.md).

1. Mungkin ada banyak tugas dalam antrian. Ini sering ditampilkan sebagai jumlah tugas yang besar—dan berkembang—di `None` negara bagian, atau sebagai sejumlah besar tugas di dalam. `Queued Tasks` and/or `Tasks Pending` CloudWatch Ini dapat terjadi karena alasan berikut:

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

   1. 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, and/or meningkatkan pekerja Apache Airflow minimum.

   1. Jika ada sejumlah besar tugas yang antri sebelum penskalaan otomatis memiliki waktu untuk mendeteksi dan menyebarkan pekerja tambahan, kami merekomendasikan **penyebaran tugas yang mengejutkan** untuk meningkatkan pekerja Apache Airflow minimum. and/or 

   1. Anda dapat menggunakan perintah [update-environment](https://docs.aws.amazon.com/cli/latest/reference/mwaa/update-environment.html) 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
      ```

   1. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihat[Penyetelan kinerja untuk Apache Airflow di Amazon MWAA](best-practices-tuning.md).

1. 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 menggambarkan contoh tugas yang terdampar.  
![\[Ini adalah gambar dengan tugas yang terdampar.\]](http://docs.aws.amazon.com/id_id/mwaa/latest/userguide/images/mwaa-airflow-scaling.png)

   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 Apache Airflow\]](http://docs.aws.amazon.com/id_id/mwaa/latest/userguide/images/mwaa-airflow-scaling-menu.png)

1. *Pelajari lebih lanjut tentang siklus hidup tugas Apache Airflow di Concepts [dalam](https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#task-lifecycle) panduan referensi Apache Airflow.*

### Saya mendapatkan kegagalan tugas tanpa log di Airflow v3
<a name="failed-task-no-log"></a>

Jika tugas Apache Airflow 3 Anda gagal tanpa log, ikuti langkah-langkah berikut:
+ Jika log pekerja menunjukkan kesalahan seperti `Task handler raised error: WorkerLostError('Worker exited prematurely: exitcode 15 Job: 12.')` sekitar waktu tugas gagal, ini menunjukkan bahwa proses pekerja bercabang yang ditugaskan ke tugas kemungkinan dihentikan secara tidak terduga.

  Untuk mengatasi hal ini, pertimbangkan untuk mengonfigurasi celery.worker\$1autoscale dengan nilai minimum dan maksimum yang sama. Contoh:

  ```
  celery.worker_autoscale=5,5  # for mw1.small
  celery.worker_autoscale=10,10 # for mw1.medium
  celery.worker_autoscale=20,20 # for mw1.large
  ```

  Ini memastikan bahwa ukuran kumpulan pekerja tetap tetap, mencegah penghentian pekerja yang tidak terduga.

## CLI
<a name="troubleshooting-cli-202"></a>

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

### Saya mendapatkan kesalahan '503' saat memicu DAG di CLI
<a name="cli-toomany-202"></a>

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

### Mengapa perintah `dags backfill` Apache Airflow CLI gagal? Apakah ada solusinya?
<a name="troubleshooting-cli-backfill"></a>

**catatan**  
Berikut ini hanya berlaku untuk lingkungan Apache Airflow v2.0.2.

`backfill`Perintah, seperti perintah Apache Airflow CLI lainnya, mem-parsing DAGs semua secara lokal sebelum diproses, terlepas dari DAGs DAG mana operasi CLI berlaku. Di lingkungan Amazon MWAA menggunakan Apache Airflow v2.0.2, karena plugin dan persyaratan belum diinstal pada server web pada saat perintah CLI berjalan, operasi parsing gagal, dan operasi tidak dipanggil. `backfill` Jika Anda tidak memiliki persyaratan atau plugin di lingkungan Anda, `backfill` operasi akan berhasil.

Untuk dapat menjalankan perintah `backfill` CLI, kami sarankan untuk memanggilnya di operator bash. Dalam operator bash, `backfill` dimulai dari pekerja, memungkinkan DAGs untuk mengurai dengan sukses karena semua persyaratan dan plguin yang diperlukan tersedia dan diinstal. Gunakan contoh berikut untuk membuat DAG dengan `BashOperator` to run`backfill`.

```
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago

with DAG(dag_id="backfill_dag", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
    cli_command = BashOperator(
        task_id="bash_command",
        bash_command="airflow dags backfill my_dag_id"
    )
```

## Operator
<a name="troubleshooting-operators-202"></a>

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

### Saya menerima `PermissionError: [Errno 13] Permission denied` kesalahan menggunakan operator S3Transform
<a name="op-s3-transform"></a>

Kami merekomendasikan langkah-langkah berikut jika Anda mencoba menjalankan skrip shell dengan operator *S3Transform* dan Anda menerima kesalahan. `PermissionError: [Errno 13] Permission denied` Langkah-langkah berikut mengasumsikan Anda memiliki file plugins.zip yang ada. Jika Anda membuat plugins.zip *baru*, lihat[Menginstal plugin kustom](configuring-dag-import-plugins.md).

1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

1. Buat skrip “transformasi” Anda.

   ```
   #!/bin/bash
   cp $1 $2
   ```

1. (opsional) pengguna macOS dan Linux mungkin perlu menjalankan perintah berikut untuk memastikan skrip dapat dieksekusi.

   ```
   chmod 777 transform_test.sh
   ```

1. Tambahkan skrip ke plugins.zip Anda.

   ```
   zip plugins.zip transform_test.sh
   ```

1. Ikuti langkah-langkah di [Unggah plugins.zip ke Amazon S3](configuring-dag-import-plugins.md#configuring-dag-plugins-upload).

1. Ikuti langkah-langkah dalam [Menentukan versi plugins.zip di konsol Amazon MWAA](configuring-dag-import-plugins.md#configuring-dag-plugins-s3-mwaaconsole).

1. Buat DAG berikut.

   ```
   from airflow import DAG
   						from airflow.providers.amazon.aws.operators.s3_file_transform import S3FileTransformOperator
   						from airflow.utils.dates import days_ago
   						import os
   						
   						DAG_ID = os.path.basename(__file__).replace(".py", "")
   						
   						with DAG (dag_id=DAG_ID, schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
   						file_transform = S3FileTransformOperator(
   						task_id='file_transform',
   						transform_script='/usr/local/airflow/plugins/transform_test.sh',
   						source_s3_key='s3://amzn-s3-demo-bucket/files/input.txt',
   						dest_s3_key='s3://amzn-s3-demo-bucket/files/output.txt'
   						)
   ```

1. Ikuti langkah-langkah di [Mengunggah kode DAG ke Amazon](configuring-dag-folder.md#configuring-dag-folder-uploading) S3.