

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
<a name="t-cloudwatch-cloudtrail-logs"></a>

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.

**Contents**
+ [Beberapa catatan](#troubleshooting-view-logs)
  + [Saya tidak dapat menemukan log tugas saya, atau saya menerima Re `ading remote log dari kesalahan Cloudwatch log_group`](#t-task-logs)
  + [Tugas gagal tanpa log](#t-task-failing-no-logs)
  + [Saya mendapatkan `ResourceAlreadyExistsException` kesalahan di CloudTrail](#t-cloudtrail)
  + [Saya mendapatkan `kesalahan permintaan` tidak valid di CloudTrail](#t-cloudtrail-bucket)
  + [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`](#t-plugins-logs)
  + [Saya mendapatkan psycopg2 'server menutup koneksi secara tak terduga 'di log penjadwal saya](#scheduler-postgres-library)
  + [Saya mendapatkan `eksekutor melaporkan instance tugas %s selesai (%s) meskipun tugas mengatakan itu %s` di log pemrosesan DAG saya](#long-running-tasks)
  + [Log pemicu tidak muncul di Aliran udara UI](#t-triggerer-logs-missing)
  + [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](#t-task-fail-permission)

## Beberapa catatan
<a name="troubleshooting-view-logs"></a>

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`
<a name="t-task-logs"></a>

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, lihat[Mengakses log Aliran Udara di Amazon CloudWatch](monitoring-airflow.md).

  1. Verifikasi bahwa peran [ eksekusi lingkungan ](mwaa-create-role.md) memiliki kebijakan izin yang benar.

  1. 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 ](https://github.com/aws/amazon-mwaa-docker-images) s-mwaa-docker-images.

### Tugas gagal tanpa log
<a name="t-task-failing-no-logs"></a>

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
<a name="t-cloudtrail"></a>

```
"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
<a name="t-cloudtrail-bucket"></a>

```
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, lihat[Tutorial awal cepat untuk Alur Kerja Terkelola Amazon untuk Apache Airflow](quick-start.md).

### 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`
<a name="t-plugins-logs"></a>
+ Kami merekomendasikan langkah-langkah berikut:

  1. Jika Anda menggunakan Apache Airflow v2, tambahkan `core.lazy_load_plugins : False` sebagai opsi konfigurasi Apache Airflow. Untuk mempelajari lebih lanjut, lihat [ Menggunakan opsi konfigurasi untuk memuat plugin di 2](configuring-env-variables.md#configuring-2.0-airflow-override).

### Saya mendapatkan psycopg2 'server menutup koneksi secara tak terduga 'di log penjadwal saya
<a name="scheduler-postgres-library"></a>

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
<a name="long-running-tasks"></a>

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
<a name="t-triggerer-logs-missing"></a>

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](mwaa-create-role.md).

**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
<a name="t-task-fail-permission"></a>

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:
+ Ubah peran eksekusi untuk lingkungan Anda menggunakan salah satu kebijakan sampel di[Peran eksekusi Amazon MWAA](mwaa-create-role.md).

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 ](https://airflow.apache.org/docs/apache-airflow-providers-databricks/stable/index.html) flow 2.1 \+.

Kami merekomendasikan langkah-langkah berikut:

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

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