

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

# Menggunakan skrip startup dengan Amazon MWAA
<a name="using-startup-script"></a>

Skrip startup adalah skrip shell (`.sh`) yang Anda host di bucket Amazon S3 lingkungan Anda yang mirip dengan Anda DAGs, persyaratan, dan plugin. Amazon MWAA menjalankan skrip ini selama startup pada setiap komponen Apache Airflow individu (pekerja, penjadwal, dan server web) sebelum menginstal persyaratan dan menginisialisasi proses Apache Airflow. Gunakan skrip startup untuk melakukan hal berikut:
+ **Instal runtime** — Instal runtime Linux yang diperlukan oleh alur kerja dan koneksi Anda.
+ **Konfigurasi variabel lingkungan** - Tetapkan variabel lingkungan untuk setiap komponen Apache Airflow. Timpa variabel umum seperti`PATH`,`PYTHONPATH`, dan`LD_LIBRARY_PATH`.
+ **Kelola kunci dan token** — Berikan token akses untuk repositori khusus ke `requirements.txt` dan konfigurasikan kunci keamanan.

Topik berikut menjelaskan cara mengonfigurasi skrip startup untuk menginstal runtime Linux, mengatur variabel lingkungan, dan memecahkan masalah terkait menggunakan Log. CloudWatch 

**Topics**
+ [Konfigurasikan skrip startup](#create-startup-script)
+ [Instal runtime Linux menggunakan skrip startup](#install-dependencies-using-startup-script)
+ [Mengatur variabel lingkungan menggunakan skrip startup](#set-variables-using-startup-script)

## Konfigurasikan skrip startup
<a name="create-startup-script"></a>

Untuk menggunakan skrip startup dengan lingkungan Amazon MWAA yang ada, unggah `.sh` file ke bucket Amazon S3 lingkungan Anda. Kemudian, untuk mengaitkan skrip dengan lingkungan, tentukan hal berikut di detail lingkungan Anda:
+ **Jalur URL Amazon S3 ke skrip — Jalur** relatif ke skrip yang dihosting di bucket Anda, misalnya, `s3://mwaa-environment/startup.sh`
+ **ID versi Amazon S3 dari skrip — Versi skrip** shell startup di bucket Amazon S3 Anda. Anda harus menentukan [ID versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/versioning-workflows.html) yang ditetapkan Amazon S3 ke file setiap kali Anda memperbarui skrip. Versi IDs Unicode, UTF-8 dikodekan, URL-ready, string buram yang panjangnya tidak lebih dari 1.024 byte, misalnya,. `3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo`

Untuk menyelesaikan langkah-langkah di bagian ini, gunakan contoh skrip berikut. Skrip mengeluarkan nilai yang ditetapkan untuk`MWAA_AIRFLOW_COMPONENT`. Variabel lingkungan ini mengidentifikasi setiap komponen Apache Airflow tempat skrip berjalan.

Salin kode dan simpan secara lokal sebagai`startup.sh`.

```
#!/bin/sh
			​
echo "Printing Apache Airflow component"
echo $MWAA_AIRFLOW_COMPONENT
```

Selanjutnya, unggah skrip ke bucket Amazon S3 Anda.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengunggah skrip shell (konsol)**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Dari daftar **Bucket**, pilih nama bucket yang terkait dengan lingkungan Anda.

1. Di tab **Objek**, pilih **Unggah**.

1. Pada halaman **Unggah**, seret dan lepas skrip shell yang Anda buat.

1. Pilih **Unggah**.

Script tercantum dalam daftar **Objek**. Amazon S3 membuat ID versi baru untuk file tersebut. Jika Anda memperbarui skrip dan mengunggahnya lagi menggunakan nama file yang sama, ID versi baru ditetapkan ke file tersebut.

------
#### [ AWS CLI ]

**Untuk membuat dan mengunggah skrip shell (CLI)**

1. Buka prompt perintah baru, dan jalankan `ls` perintah Amazon S3 untuk membuat daftar dan mengidentifikasi bucket yang terkait dengan lingkungan Anda.

   ```
   aws s3 ls
   ```

1. Arahkan ke folder tempat Anda menyimpan skrip shell. Gunakan `cp` di jendela prompt baru untuk mengunggah skrip ke bucket Anda. Ganti *amzn-s3-demo-bucket* dengan informasi Anda.

   ```
   aws s3 cp startup.sh s3://amzn-s3-demo-bucket/startup.sh
   ```

   Jika berhasil, Amazon S3 mengeluarkan jalur URL ke objek:

   ```
   upload: ./startup.sh to s3://amzn-s3-demo-bucket/startup.sh
   ```

1. Gunakan perintah berikut untuk mengambil ID versi terbaru untuk skrip.

   ```
   aws s3api list-object-versions --bucket amzn-s3-demo-bucket --prefix startup --query 'Versions[?IsLatest].[VersionId]' --output text
   ```

   ```
   BbdVMmBRjtestta1EsVnbybZp1Wqh1J4
   ```

Anda menentukan ID versi ini saat Anda mengaitkan skrip dengan lingkungan.

------

Sekarang, kaitkan skrip dengan lingkungan Anda.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengaitkan skrip dengan lingkungan (konsol)**

1. Buka halaman [Lingkungan](https://console.aws.amazon.com/mwaa/home#/environments) di konsol Amazon MWAA.

1. Pilih baris untuk lingkungan yang ingin Anda perbarui, lalu pilih **Edit**.

1. Pada halaman **Tentukan detail**, untuk **file skrip Startup - *opsional***, masukkan URL Amazon S3 untuk skrip, misalnya:. `s3://amzn-s3-demo-bucket/startup-sh.`

1. Pilih versi terbaru dari daftar drop-down, atau **Jelajahi S3** untuk menemukan skrip.

1. Pilih **Berikutnya**, lalu lanjutkan ke halaman **Tinjau dan simpan**.

1. Tinjau perubahan, lalu pilih **Simpan**.

Pembaruan lingkungan dapat memakan waktu antara 10 hingga 30 menit. Amazon MWAA menjalankan skrip startup karena setiap komponen di lingkungan Anda dimulai ulang.

------
#### [ AWS CLI ]

**Untuk mengaitkan skrip dengan lingkungan (CLI)**
+ Buka prompt perintah dan gunakan `update-environment` untuk menentukan URL Amazon S3 dan ID versi untuk skrip.

  ```
  aws mwaa update-environment \
  --name your-mwaa-environment \
  --startup-script-s3-path startup.sh \
  --startup-script-s3-object-version BbdVMmBRjtestta1EsVnbybZp1Wqh1J4
  ```

  Jika berhasil, Amazon MWAA mengembalikan Amazon Resource Name (ARN) untuk lingkungan:

  ```
  arn:aws:airflow:us-west-2:123456789012:environment/your-mwaa-environment 
  ```

Pembaruan lingkungan dapat memakan waktu antara 10 hingga 30 menit. Amazon MWAA menjalankan skrip startup karena setiap komponen di lingkungan Anda dimulai ulang.

------

Terakhir, ambil peristiwa log untuk memverifikasi bahwa skrip berfungsi seperti yang diharapkan. Saat Anda mengaktifkan pencatatan untuk setiap komponen Apache Airflow, Amazon MWAA membuat grup log dan aliran log baru. Untuk informasi selengkapnya, lihat jenis [log Apache Airflow](monitoring-airflow.md#monitoring-airflow-log-groups).

------
#### [ Konsol Manajemen AWS ]

**Untuk mendapatkan aliran log Apache Airflow (konsol)**

1. Buka halaman [Lingkungan](https://console.aws.amazon.com/mwaa/home#/environments) di konsol Amazon MWAA.

1. Pilih lingkungan Anda.

1. Di panel **Pemantauan**, pilih grup log yang ingin Anda akses log, misalnya, grup log **penjadwal aliran udara**.

1. Di CloudWatch konsol, dari daftar **aliran Log**, pilih aliran dengan awalan berikut:. `startup_script_execution_ip`

1. Pada panel **Log peristiwa**, Anda akan merujuk ke output dari perintah mencetak nilai untuk`MWAA_AIRFLOW_COMPONENT`. Misalnya, untuk log penjadwal, Anda akan yang berikut ini:

   ```
   Printing Apache Airflow component
   								scheduler
   								Finished running startup script. Execution time: 0.004s.
   								Running verification
   								Verification completed
   ```

Anda dapat mengulangi langkah-langkah sebelumnya untuk mengakses log pekerja dan server web.

------

## Instal runtime Linux menggunakan skrip startup
<a name="install-dependencies-using-startup-script"></a>

Gunakan skrip startup untuk memperbarui sistem operasi komponen Apache Airflow, dan instal pustaka runtime tambahan untuk digunakan dengan alur kerja Anda. Misalnya, skrip berikut berjalan `yum update` untuk memperbarui sistem operasi.

Saat menjalankan `yum update` skrip startup, Anda harus mengecualikan Python menggunakan `--exclude=python*` seperti yang tercantum dalam contoh. Agar lingkungan Anda berjalan, Amazon MWAA menginstal versi Python tertentu yang kompatibel dengan lingkungan Anda. Oleh karena itu, Anda tidak dapat memperbarui versi Python lingkungan menggunakan skrip startup.

```
#!/bin/sh
			
echo "Updating operating system"
sudo yum update -y --exclude=python*
```

Untuk menginstal runtime pada komponen Apache Airflow tertentu, `MWAA_AIRFLOW_COMPONENT` gunakan `if` dan dan pernyataan bersyarat. `fi` Contoh ini menjalankan satu perintah untuk menginstal `libaio` perpustakaan pada penjadwal dan pekerja, tetapi tidak di server web.

**penting**  
Jika Anda telah mengonfigurasi [server web pribadi](configuring-networking.md#access-overview-private), Anda harus menggunakan kondisi berikut atau menyediakan semua file instalasi secara lokal untuk menghindari batas waktu instalasi.
Gunakan `sudo` untuk menjalankan operasi yang membutuhkan hak administratif.

```
#!/bin/sh
			
if [[ "${MWAA_AIRFLOW_COMPONENT}" != "webserver" ]]
  then
    sudo yum -y install libaio
			
fi
```

Anda dapat menggunakan skrip startup untuk mendapatkan versi Python.

```
#!/bin/sh
			
export PYTHON_VERSION_CHECK=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'`
echo "Python version is $PYTHON_VERSION_CHECK"
```

Amazon MWAA tidak mendukung penggantian versi Python default, karena hal ini dapat menyebabkan ketidakcocokan dengan pustaka Apache Airflow yang diinstal.

## Mengatur variabel lingkungan menggunakan skrip startup
<a name="set-variables-using-startup-script"></a>

Gunakan skrip startup untuk mengatur variabel lingkungan dan memodifikasi konfigurasi Apache Airflow. Berikut ini mendefinisikan variabel baru,`ENVIRONMENT_STAGE`. Anda dapat mereferensikan variabel ini dalam DAG atau dalam modul kustom Anda.

```
#!/bin/sh
			
export ENVIRONMENT_STAGE="development"
echo "$ENVIRONMENT_STAGE"
```

Gunakan skrip startup untuk menimpa Apache Airflow atau variabel sistem yang umum. Misalnya, Anda mengatur `LD_LIBRARY_PATH` untuk menginstruksikan Python untuk mencari binari di jalur yang Anda tentukan. [Ini memungkinkan Anda menyediakan binari khusus untuk alur kerja Anda menggunakan plugin:](https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/plugins.html)

```
#!/bin/sh
			
export LD_LIBRARY_PATH=/usr/local/airflow/plugins/your-custom-binary
```

### Variabel lingkungan yang tersimpan
<a name="reserved-environment-variables"></a>

Amazon MWAA menyimpan satu set variabel lingkungan kritis. Jika Anda menimpa variabel *cadangan*, Amazon MWAA mengembalikannya ke default. Berikut ini mencantumkan variabel yang dicadangkan:
+ `MWAA__AIRFLOW__COMPONENT`— Digunakan untuk mengidentifikasi komponen Apache Airflow dengan salah satu nilai berikut`scheduler`:`worker`,, atau. `webserver`
+ `AIRFLOW__WEBSERVER__SECRET_KEY`— Kunci rahasia yang digunakan untuk menandatangani cookie sesi dengan aman di server web Apache Airflow.
+ `AIRFLOW__CORE__FERNET_KEY`— Kunci yang digunakan untuk enkripsi dan dekripsi data sensitif yang disimpan dalam database metadata, misalnya, kata sandi koneksi.
+ `AIRFLOW_HOME`— Jalur ke direktori home Apache Airflow tempat file konfigurasi dan file DAG disimpan secara lokal.
+ `AIRFLOW__CELERY__BROKER_URL`— URL broker pesan yang digunakan untuk komunikasi antara penjadwal Apache Airflow dan node pekerja Celery.
+ `AIRFLOW__CELERY__RESULT_BACKEND`— URL database yang digunakan untuk menyimpan hasil tugas Seledri.
+ `AIRFLOW__CORE__EXECUTOR`— Kelas eksekutor yang harus digunakan Apache Airflow. Di Amazon MWAA ini adalah `CeleryExecutor`
+ `AIRFLOW__CORE__LOAD_EXAMPLES`— Digunakan untuk mengaktifkan, atau menonaktifkan, pemuatan contoh DAGs.
+ `AIRFLOW__METRICS__METRICS_BLOCK_LIST`— Digunakan untuk mengelola metrik Apache Airflow mana yang dipancarkan dan ditangkap oleh Amazon MWAA di. CloudWatch
+ `SQL_ALCHEMY_CONN`— String koneksi untuk database RDS untuk PostgreSQL yang digunakan untuk menyimpan metadata Apache Airflow di Amazon MWAA.
+ `AIRFLOW__CORE__SQL_ALCHEMY_CONN`— Digunakan untuk tujuan yang sama seperti`SQL_ALCHEMY_CONN`, tetapi mengikuti konvensi penamaan Apache Airflow yang baru.
+ `AIRFLOW__CELERY__DEFAULT_QUEUE`— Antrian default untuk tugas Seledri di Apache Airflow.
+ `AIRFLOW__OPERATORS__DEFAULT_QUEUE`— Antrian default untuk tugas menggunakan operator Apache Airflow tertentu.
+ `AIRFLOW_VERSION`- Versi Apache Airflow diinstal di lingkungan Amazon MWAA.
+ `AIRFLOW_CONN_AWS_DEFAULT`— AWS Kredensi default yang digunakan untuk berintegrasi dengan AWS layanan lain di.
+ `AWS_DEFAULT_REGION`— Menetapkan default yang Wilayah AWS digunakan dengan kredensi default untuk diintegrasikan dengan layanan lain AWS .
+ `AWS_REGION`— Jika didefinisikan, variabel lingkungan ini mengesampingkan nilai dalam variabel lingkungan `AWS_DEFAULT_REGION` dan wilayah pengaturan profil.
+ `PYTHONUNBUFFERED`— Digunakan untuk mengirim `stdout` dan `stderr` mengalirkan ke log kontainer.
+ `AIRFLOW__METRICS__STATSD_ALLOW_LIST`— Digunakan untuk mengonfigurasi daftar izinkan awalan dipisahkan koma untuk mengirim metrik yang dimulai dengan elemen daftar.
+ `AIRFLOW__METRICS__STATSD_ON`— Mengaktifkan metrik pengiriman ke. `StatsD`
+ `AIRFLOW__METRICS__STATSD_HOST`— Digunakan untuk terhubung ke `StatSD` daemon.
+ `AIRFLOW__METRICS__STATSD_PORT`— Digunakan untuk terhubung ke `StatSD` daemon.
+ `AIRFLOW__METRICS__STATSD_PREFIX`— Digunakan untuk terhubung ke `StatSD` daemon.
+ `AIRFLOW__CELERY__WORKER_AUTOSCALE`— Menetapkan konkurensi maksimum dan minimum.
+ `AIRFLOW__CORE__DAG_CONCURRENCY`— Menetapkan jumlah instance tugas yang dapat dijalankan secara bersamaan oleh penjadwal dalam satu DAG.
+ `AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG`— Menetapkan jumlah maksimum tugas aktif per DAG.
+ `AIRFLOW__CORE__PARALLELISM`— Mendefinisikan jumlah maksimum instance tugas yang dapat secara bersamaan.
+ `AIRFLOW__SCHEDULER__PARSING_PROCESSES`— Menetapkan jumlah maksimum proses yang diuraikan oleh penjadwal untuk menjadwalkan. DAGs
+ `AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT`— Mendefinisikan jumlah detik pekerja menunggu untuk mengakui tugas sebelum pesan dikirim kembali ke pekerja lain.
+ `AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__REGION`— Menetapkan Wilayah AWS untuk transportasi Seledri yang mendasarinya.
+ `AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__PREDEFINED_QUEUES`— Mengatur antrian untuk transportasi Seledri yang mendasarinya.
+ `AIRFLOW_SCHEDULER_ALLOWED_RUN_ID_PATTERN`— Digunakan untuk memverifikasi validitas input Anda untuk `run_id` parameter saat memicu DAG.
+ `AIRFLOW__WEBSERVER__BASE_URL`— URL server web yang digunakan untuk meng-host Apache Airflow UI.
+ `PYTHONPATH`(hanya untuk Apache Airflow v2.9 dan yang lebih baru) - Dicadangkan oleh Amazon MWAA untuk memastikan bahwa semua fungsi lingkungan dasar beroperasi dengan benar.
**catatan**  
*Untuk Apache Airflow versi lebih awal dari v2.9`PYTHONPATH`, adalah variabel lingkungan tanpa syarat.*

### Variabel lingkungan yang tidak dicadangkan
<a name="unreserved-environment-variables"></a>

Anda dapat menggunakan skrip startup untuk menimpa variabel lingkungan *yang tidak dilindungi*. Berikut ini mencantumkan beberapa variabel umum ini:
+ `PATH`— Menentukan daftar direktori tempat sistem operasi mencari file dan skrip yang dapat dieksekusi. Ketika perintah berjalan di baris perintah, sistem memeriksa direktori `PATH` untuk menemukan dan menjalankan perintah. Saat Anda membuat operator atau tugas khusus di Apache Airflow, Anda mungkin perlu mengandalkan skrip eksternal atau executable. Jika direktori yang berisi file-file ini tidak dalam yang ditentukan dalam `PATH` variabel, tugas gagal dijalankan ketika sistem tidak dapat menemukannya. Dengan menambahkan direktori yang sesuai`PATH`, tugas Apache Airflow dapat menemukan dan menjalankan executable yang diperlukan.
+ `PYTHONPATH`— Digunakan oleh penerjemah Python untuk menentukan direktori mana yang akan mencari modul dan paket yang diimpor. Ini adalah daftar direktori yang dapat Anda tambahkan ke jalur pencarian default. Ini memungkinkan penerjemah menemukan dan memuat pustaka Python yang tidak termasuk dalam pustaka standar, atau diinstal dalam direktori sistem. Gunakan variabel ini untuk menambahkan modul Anda dan paket Python kustom dan menggunakannya dengan Anda. DAGs
**catatan**  
*Untuk Apache Airflow v2.9 dan yang lebih baru`PYTHONPATH`, adalah variabel lingkungan yang dicadangkan.*
+ `LD_LIBRARY_PATH`- Variabel lingkungan yang digunakan oleh dynamic linker dan loader di Linux untuk menemukan dan memuat pustaka bersama. Ini menentukan daftar direktori yang berisi pustaka bersama, yang dicari sebelum direktori perpustakaan sistem default. Gunakan variabel ini untuk menentukan binari kustom Anda.
+ `CLASSPATH`— Digunakan oleh Java Runtime Environment (JRE) dan Java Development Kit (JDK) untuk mencari dan memuat kelas Java, pustaka, dan sumber daya saat runtime. Ini adalah daftar direktori, file JAR, dan arsip ZIP yang berisi kode Java yang dikompilasi.