Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat plugin khusus dengan Oracle
Contoh berikut memandu Anda melalui langkah-langkah untuk membuat plugin khusus menggunakan Oracle untuk Amazon MWAA dan dapat dikombinasikan dengan plugin dan binari khusus lainnya di file plugins.zip Anda.
Daftar Isi
Versi
Anda dapat menggunakan contoh kode pada halaman ini dengan Apache Airflow v2 di Python 3.10 dan Apache Airflowv3 di Python 3.11
Prasyarat
Untuk menggunakan kode sampel di halaman ini, Anda memerlukan yang berikut:
-
Lingkungan Amazon MWAA.
-
Pencatatan pekerja diaktifkan pada tingkat log apa pun,
CRITICAL
atau di bagian sebelumnya untuk lingkungan Anda. Untuk informasi selengkapnya tentang jenis log Amazon MWAA dan cara mengelola grup log Anda, lihat Mengakses log Aliran Udara di Amazon CloudWatch
Izin
Tidak diperlukan izin tambahan untuk menggunakan contoh kode di halaman ini.
Persyaratan
Untuk menggunakan kode sampel pada halaman ini, tambahkan dependensi berikut ke Anda. requirements.txt
Untuk mempelajari lebih lanjut, lihatMenginstal dependensi Python.
-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/constraints-3.7.txt cx_Oracle apache-airflow-providers-oracle
Contoh kode
Langkah-langkah berikut menjelaskan cara membuat kode DAG yang akan menguji plugin kustom.
-
Di prompt perintah Anda, arahkan ke direktori tempat kode DAG Anda disimpan. Misalnya:
cd dags
-
Salin isi contoh kode berikut dan simpan secara lokal sebagai
oracle.py
.from airflow import DAG from airflow.operators.python_operator import PythonOperator from airflow.utils.dates import days_ago import os import cx_Oracle DAG_ID = os.path.basename(__file__).replace(".py", "") def testHook(**kwargs): cx_Oracle.init_oracle_client() version = cx_Oracle.clientversion() print("cx_Oracle.clientversion",version) return version with DAG(dag_id=DAG_ID, schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: hook_test = PythonOperator( task_id="hook_test", python_callable=testHook, provide_context=True )
Buat plugin kustom
Bagian ini menjelaskan cara mengunduh dependensi, membuat plugin kustom dan plugins.zip.
Unduh dependensi
Amazon MWAA akan mengekstrak konten plugins.zip ke dalam setiap penjadwal /usr/local/airflow/plugins
Amazon MWAA dan wadah pekerja. Ini digunakan untuk menambahkan binari ke lingkungan Anda. Langkah-langkah berikut menjelaskan cara merakit file yang diperlukan untuk plugin kustom.
Tarik gambar wadah Amazon Linux
-
Di command prompt Anda, tarik image container Amazon Linux, dan jalankan container secara lokal. Misalnya:
docker pull amazonlinux docker run -it amazonlinux:latest /bin/bash
Prompt perintah Anda dapat memanggil baris perintah bash. Misalnya:
bash-4.2#
-
Instal fasilitas asinkron I/O asli Linux (libaio).
yum -y install libaio
-
Biarkan jendela ini terbuka untuk langkah selanjutnya. Kami akan menyalin file-file berikut secara lokal:
lib64/libaio.so.1
,,lib64/libaio.so.1.0.0
.lib64/libaio.so.1.0.1
Unduh folder klien
-
Instal paket unzip secara lokal. Misalnya:
sudo yum install unzip
-
Buat
oracle_plugin
direktori. Misalnya:mkdir oracle_plugin cd oracle_plugin
-
Gunakan perintah curl berikut untuk mendownload instantclient-basic-linux.x64-18.5.0.0.0dbru.zip
dari Oracle Instant Client Downloads untuk Linux x86-64 (64-bit). curl https://download.oracle.com/otn_software/linux/instantclient/185000/instantclient-basic-linux.x64-18.5.0.0.0dbru.zip > client.zip
-
Buka zip
client.zip
file. Misalnya:unzip *.zip
Ekstrak file dari Docker
-
Dalam prompt perintah baru, tampilkan dan tuliskan ID kontainer Docker Anda. Misalnya:
docker container ls
Prompt perintah Anda dapat mengembalikan semua kontainer dan mereka IDs. Misalnya:
debc16fd6970
-
Di
oracle_plugin
direktori Anda, ekstraklib64/libaio.so.1.0.1
filelib64/libaio.so.1
lib64/libaio.so.1.0.0
,, keinstantclient_18_5
folder lokal. Misalnya:docker cp debc16fd6970:/lib64/libaio.so.1 instantclient_18_5/ docker cp debc16fd6970:/lib64/libaio.so.1.0.0 instantclient_18_5/ docker cp debc16fd6970:/lib64/libaio.so.1.0.1 instantclient_18_5/
Plugin Khusus
Apache Airflow akan mengeksekusi isi file Python di folder plugin saat startup. Ini digunakan untuk mengatur dan memodifikasi variabel lingkungan. Langkah-langkah berikut menjelaskan kode sampel untuk plugin kustom.
-
Salin isi contoh kode berikut dan simpan secara lokal sebagai
env_var_plugin_oracle.py
.from airflow.plugins_manager import AirflowPlugin import os os.environ["LD_LIBRARY_PATH"]='/usr/local/airflow/plugins/instantclient_18_5' os.environ["DPI_DEBUG_LEVEL"]="64" class EnvVarPlugin(AirflowPlugin): name = 'env_var_plugin'
Plugins.zip
Langkah-langkah berikut menjelaskan cara membuatplugins.zip
. Isi contoh ini dapat dikombinasikan dengan plugin dan binari Anda yang lain menjadi satu plugins.zip
file.
Zip isi direktori plugin
-
Di prompt perintah Anda, arahkan ke
oracle_plugin
direktori. Misalnya:cd oracle_plugin
-
Zip
instantclient_18_5
direktori di plugins.zip. Misalnya:zip -r ../plugins.zip ./
Prompt perintah Anda menampilkan:
oracle_plugin$ ls client.zip instantclient_18_5
-
Hapus
client.zip
file. Misalnya:rm client.zip
Zip file env_var_plugin_oracle.py
-
Tambahkan
env_var_plugin_oracle.py
file ke root plugins.zip. Misalnya:zip plugins.zip env_var_plugin_oracle.py
-
plugins.zip Anda sekarang menyertakan yang berikut ini:
env_var_plugin_oracle.py instantclient_18_5/
Opsi konfigurasi Airflow
Jika Anda menggunakan Apache Airflow v2, core.lazy_load_plugins : False
tambahkan sebagai opsi konfigurasi Apache Airflow. Untuk mempelajari lebih lanjut, lihat Menggunakan opsi konfigurasi untuk memuat plugin di 2.
Apa selanjutnya?
-
Pelajari cara mengunggah
requirements.txt
file dalam contoh ini ke bucket Amazon S3 Anda. Menginstal dependensi Python -
Pelajari cara mengunggah kode DAG dalam contoh ini ke
dags
folder di bucket Amazon S3 Anda. Menambahkan atau memperbarui DAGs -
Pelajari lebih lanjut cara mengunggah
plugins.zip
file dalam contoh ini ke bucket Amazon S3 Anda. Menginstal plugin kustom