

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

# Mengubah zona waktu DAG di Amazon MWAA
<a name="samples-plugins-timezone"></a>

Apache Airflow menjadwalkan grafik asiklik terarah (DAG) Anda di UTC\$10 secara default. [Langkah-langkah berikut menyajikan bagaimana Anda dapat mengubah zona waktu di mana Amazon MWAA menjalankan Anda DAGs dengan Pendulum.](https://pypi.org/project/pendulum/) Secara opsional, topik ini menunjukkan bagaimana Anda dapat membuat plugin khusus untuk mengubah zona waktu log Apache Airflow lingkungan Anda.

**Topics**
+ [Versi](#samples-plugins-timezone-version)
+ [Prasyarat](#samples-plugins-timezone-prerequisites)
+ [Izin](#samples-plugins-timezone-permissions)
+ [Buat plugin untuk mengubah zona waktu di log Airflow](#samples-plugins-timezone-custom-plugin)
+ [Buat `plugins.zip`](#samples-plugins-timezone-plugins-zip)
+ [Contoh kode](#samples-plugins-timezone-dag)
+ [Apa selanjutnya?](#samples-plugins-timezone-plugins-next-up)

## Versi
<a name="samples-plugins-timezone-version"></a>

**[Anda dapat menggunakan contoh kode pada halaman ini dengan **Apache Airflow v2 di Python 3.10 dan Apache Airflow**[v3 di Python 3.11](https://peps.python.org/pep-0619/).](https://peps.python.org/pep-0664/)**

## Prasyarat
<a name="samples-plugins-timezone-prerequisites"></a>

Untuk menggunakan kode sampel di halaman ini, Anda memerlukan yang berikut:
+ Lingkungan [Amazon MWAA.](get-started.md)

## Izin
<a name="samples-plugins-timezone-permissions"></a>

Tidak diperlukan izin tambahan untuk menggunakan contoh kode di halaman ini.

## Buat plugin untuk mengubah zona waktu di log Airflow
<a name="samples-plugins-timezone-custom-plugin"></a>

Apache Airflow menjalankan file Python di direktori saat start-up. `plugins` Dengan plugin berikut, Anda dapat mengganti zona waktu pelaksana, yang memodifikasi zona waktu di mana Apache Airflow menulis log.

1. Buat direktori bernama `plugins` untuk plugin kustom Anda, dan arahkan ke direktori. Contoh:

   ```
   $ mkdir plugins
   $ cd plugins
   ```

1. Salin isi contoh kode berikut dan simpan secara lokal seperti `dag-timezone-plugin.py` di `plugins` folder.

   ```
   import time
   import os
   
   os.environ['TZ'] = 'America/Los_Angeles'
   time.tzset()
   ```

1. Di `plugins` direktori, buat file Python kosong bernama. `__init__.py` `plugins`Direktori Anda harus mirip dengan yang berikut ini:

   ```
   plugins/
    |-- __init__.py
    |-- dag-timezone-plugin.py
   ```

## Buat `plugins.zip`
<a name="samples-plugins-timezone-plugins-zip"></a>

Langkah-langkah berikut menjelaskan cara membuat`plugins.zip`. Isi contoh ini dapat dikombinasikan dengan plugin dan binari lain menjadi satu `plugins.zip` file.

1. Di prompt perintah Anda, arahkan ke `plugins` direktori dari langkah sebelumnya. Contoh:

   ```
   cd plugins
   ```

1. Zip konten dalam `plugins` direktori Anda.

   ```
   zip -r ../plugins.zip ./
   ```

1. Unggah `plugins.zip` ke bucket S3 Anda

   ```
   aws s3 cp plugins.zip s3://your-mwaa-bucket/
   ```

## Contoh kode
<a name="samples-plugins-timezone-dag"></a>

Untuk mengubah zona waktu default (UTC\$10) di mana DAG berjalan, kita akan menggunakan perpustakaan bernama [Pendulum](https://pypi.org/project/pendulum/), pustaka Python untuk bekerja dengan datetime yang sadar zona waktu.

1. Di prompt perintah Anda, arahkan ke direktori tempat Anda DAGs disimpan. Contoh:

   ```
   cd dags
   ```

1. Salin konten dari contoh berikut dan simpan sebagai`tz-aware-dag.py`.

   ```
   from airflow import DAG
   from airflow.operators.bash_operator import BashOperator
   from datetime import datetime, timedelta
   # Import the Pendulum library.
   import pendulum
   
   # Instantiate Pendulum and set your timezone.
   local_tz = pendulum.timezone("America/Los_Angeles")
   
   with DAG(
       dag_id = "tz_test",
       schedule_interval="0 12 * * *",
       catchup=False,
       start_date=datetime(2022, 1, 1, tzinfo=local_tz)
   ) as dag:
       bash_operator_task = BashOperator(
           task_id="tz_aware_task",
           dag=dag,
           bash_command="date"
       )
   ```

1.  Jalankan AWS CLI perintah berikut untuk menyalin DAG ke bucket lingkungan Anda, lalu picu DAG menggunakan Apache Airflow UI. 

   ```
   aws s3 cp your-dag.py s3://your-environment-bucket/dags/
   ```

1. Jika berhasil, Anda akan menampilkan yang serupa dengan yang berikut di log tugas untuk `tz_aware_task` di `tz_test` DAG:

   ```
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:74}} INFO - Running command: ['bash', '-c', 'date']
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:85}} INFO - Output:
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:89}} INFO - Mon Aug  1 12:00:00 PDT 2022
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:93}} INFO - Command exited with return code 0
   [2022-08-01, 12:00:00 PDT] {{taskinstance.py:1280}} INFO - Marking task as SUCCESS. dag_id=tz_test, task_id=tz_aware_task, execution_date=20220801T190033, start_date=20220801T190035, end_date=20220801T190035
   [2022-08-01, 12:00:00 PDT] {{local_task_job.py:154}} INFO - Task exited with return code 0
   [2022-08-01, 12:00:00 PDT] {{local_task_job.py:264}} INFO - 0 downstream tasks scheduled from follow-on schedule check
   ```

## Apa selanjutnya?
<a name="samples-plugins-timezone-plugins-next-up"></a>
+ Pelajari lebih lanjut cara mengunggah `plugins.zip` file dalam contoh ini ke bucket Amazon S3 Anda. [Menginstal plugin kustom](configuring-dag-import-plugins.md)