Menggunakan skrip startup dengan Amazon MWAA - Amazon Managed Workflows for Apache Airflow (MWAA)

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 sepertiPATH,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

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.

AWS Management Console
Untuk mengunggah skrip shell (konsol)
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

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

  3. Di tab Objek, pilih Unggah.

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

  5. Pilih Unggah.

Script muncul 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
  2. Arahkan ke folder tempat Anda menyimpan skrip shell. Gunakan cp di jendela prompt baru untuk mengunggah skrip ke bucket Anda. Ganti bucket s3-Anda dengan informasi Anda.

    $ aws s3 cp startup.sh s3://your-s3-bucket/startup.sh

    Jika berhasil, Amazon S3 mengeluarkan jalur URL ke objek:

    upload: ./startup.sh to s3://your-s3-bucket/startup.sh
  3. Gunakan perintah berikut untuk mengambil ID versi terbaru untuk skrip.

    $ aws s3api list-object-versions --bucket your-s3-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.

AWS Management Console
Untuk mengaitkan skrip dengan lingkungan (konsol)
  1. Buka halaman Lingkungan di konsol Amazon MWAA.

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

  3. Pada halaman Tentukan detail, untuk file skrip Startup - opsional, masukkan URL Amazon S3 untuk skrip, misalnya:. s3://your-mwaa-bucket/startup-sh.

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

  5. Pilih Berikutnya, lalu lanjutkan ke halaman Tinjau dan simpan.

  6. 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.

AWS Management Console
Untuk memeriksa aliran log Apache Airflow (konsol)
  1. Buka halaman Lingkungan di konsol Amazon MWAA.

  2. Pilih lingkungan Anda.

  3. Di panel Pemantauan, pilih grup log yang ingin Anda lihat lognya, misalnya, grup log penjadwal aliran udara.

  4. Di CloudWatch konsol, dari daftar aliran Log, pilih aliran dengan awalan berikut:. startup_script_exection_ip

  5. Pada panel Log peristiwa, Anda akan melihat output dari perintah mencetak nilai untukMWAA_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 melihat log pekerja dan server web.

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 adalah CeleryExecutor

  • 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 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 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 untuk run_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 dalam PATH 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.