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
Skrip startup adalah skrip shell (.sh
) yang Anda host di bucket Amazon S3 lingkungan Anda yang mirip dengan DAG, persyaratan, dan plugin Anda. 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.
-
Konfigurasikan variabel lingkungan - Tetapkan variabel lingkungan untuk setiap komponen Apache Airflow. Timpa variabel umum seperti
PATH
,PYTHONPATH
, danLD_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
Topik
Konfigurasikan skrip startup
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 yang ditetapkan Amazon S3 ke file setiap kali Anda memperbarui skrip. ID Versi adalah Unicode, UTF-8 yang dikodekan, siap URL, 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 untukMWAA_AIRFLOW_COMPONENT
. Variabel lingkungan ini mengidentifikasi setiap komponen Apache Airflow yang dijalankan skrip.
Salin kode dan simpan secara lokal sebagaistartup.sh
.
#!/bin/sh echo "Printing Apache Airflow component" echo $MWAA_AIRFLOW_COMPONENT
Selanjutnya, unggah skrip ke bucket Amazon S3 Anda.
Sekarang, kaitkan skrip dengan lingkungan Anda.
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.
Instal runtime Linux menggunakan skrip startup
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 ditunjukkan pada 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, gunakan MWAA_AIRFLOW_COMPONENT
dan if
dan fi
pernyataan bersyarat. 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, 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 memeriksa 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
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:
#!/bin/sh export LD_LIBRARY_PATH=/usr/local/airflow/plugins/
your-custom-binary
Variabel lingkungan yang tersimpan
Amazon MWAA menyimpan satu set variabel lingkungan kritis. Jika Anda menimpa variabel yang dicadangkan, Amazon MWAA mengembalikannya ke defaultnya. 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 adalahCeleryExecutor
-
AIRFLOW__CORE__LOAD_EXAMPLES
— Digunakan untuk mengaktifkan, atau menonaktifkan, pemuatan contoh DAG. -
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 RDS untuk database PostgreSQL yang digunakan untuk menyimpan metadata Apache Airflow di Amazon MWAA. -
AIRFLOW__CORE__SQL_ALCHEMY_CONN
— Digunakan untuk tujuan yang sama sepertiSQL_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 AWS Wilayah default yang digunakan dengan kredensil default untuk diintegrasikan dengan layanan lainAWS. -
AWS_REGION
— Jika didefinisikan, variabel lingkungan ini mengesampingkan nilai dalam variabel lingkunganAWS_DEFAULT_REGION
dan wilayah pengaturan profil. -
PYTHONUNBUFFERED
— Digunakan untuk mengirimstdout
danstderr
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 keStatSD
daemon. -
AIRFLOW__METRICS__STATSD_PORT
— Digunakan untuk terhubung keStatSD
daemon. -
AIRFLOW__METRICS__STATSD_PREFIX
— Digunakan untuk terhubung keStatSD
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 DAG. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT
— Mendefinisikan jumlah detik seorang pekerja menunggu untuk mengakui tugas sebelum pesan dikirim kembali ke pekerja lain. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__REGION
— Menetapkan AWS Wilayah 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 untukrun_id
parameter saat memicu DAG. -
AIRFLOW__WEBSERVER__BASE_URL
— URL server web yang digunakan untuk meng-host Apache Airflow UI.
Variabel lingkungan yang tidak dicadangkan
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 untuk menemukan dan menjalankan perintah.PATH
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 dalamPATH
variabel, tugas gagal dijalankan ketika sistem tidak dapat menemukannya. Dengan menambahkan direktori yang sesuaiPATH
, 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 dan paket Python kustom dan menggunakannya dengan DAG Anda. -
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.