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 kustom menggunakan Oracle untuk Amazon MWAA dan dapat dikombinasikan dengan plugin kustom lainnya dan binari dalam file plugins.zip Anda.
Daftar Isi
Versi
-
Contoh kode pada halaman ini dapat digunakan denganApache aliran udara v1diPython 3.7
.
-
Anda dapat menggunakan contoh kode di halaman ini denganApache Airflow v2 dan di atasnyadiPython 3.10
.
Prasyarat
Untuk menggunakan kode contoh di halaman ini, Anda memerlukan yang berikut ini:
-
SebuahLingkungan Amazon MWAA.
-
Pekerjalogging diaktifkan pada setiap tingkat log,
CRITICAL
atau di atas, untuk lingkungan Anda. Untuk informasi selengkapnya tentang jenis log Amazon MWAA dan cara mengelola grup log Anda, lihatMelihat log Aliran Udara di Amazon CloudWatch
Izin
-
Tidak ada izin tambahan yang diperlukan untuk menggunakan contoh kode di halaman ini.
Persyaratan
Untuk menggunakan kode contoh pada halaman ini, tambahkan dependensi berikut kerequirements.txt
. Untuk mempelajari selengkapnya, lihat Menginstal dependensi Python.
Sampel kode
Langkah-langkah berikut menjelaskan cara membuat kode DAG yang akan menguji plugin kustom.
-
Di prompt perintah Anda, navigasikan 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 khusus
Bagian ini menjelaskan cara mengunduh dependensi, membuat plugin khusus, dan plugins.zip.
Unduh dependensi
Amazon MWAA akan mengekstrak isi plugins.zip ke/usr/local/airflow/plugins
pada setiap penjadwal Amazon MWAA dan wadah pekerja. Ini digunakan untuk menambahkan biner ke lingkungan Anda. Langkah-langkah berikut menjelaskan cara merakit file yang diperlukan untuk plugin kustom.
Tarik gambar kontainer Amazon Linux
-
Di prompt perintah 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 harus memanggil baris perintah bash. Misalnya:
bash-4.2#
-
Instal fasilitas I/O asinkron asli Linux (libaio).
yum -y install libaio
-
Jauhkan jendela ini terbuka untuk langkah-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 sebuah
oracle_plugin
direktori. Misalnya:mkdir oracle_plugin cd oracle_plugin
-
Gunakan perintah curl berikut untuk men-downloadinstantclient-basic-linux.x64-18.5.0.0.0dbru.zip
dariUnduhan Klien Instan Oracle 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
-
Unzip
client.zip
berkas. Misalnya:unzip *.zip
Ekstrak file dari Docker
-
Dalam prompt perintah baru, tampilkan dan tuliskan ID container Docker Anda. Misalnya:
docker container ls
Prompt perintah Anda harus mengembalikan semua kontainer dan ID-nya. Misalnya:
debc16fd6970
-
Di dalam
oracle_plugin
direktori, ekstraklib64/libaio.so.1
,lib64/libaio.so.1.0.0
,lib64/libaio.so.1.0.1
file ke lokalinstantclient_18_5
folder. 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 kustom
Apache Airflow akan mengeksekusi isi file Python di folder plugin saat startup. Ini digunakan untuk mengatur dan memodifikasi variabel lingkungan. Langkah-langkah berikut menjelaskan contoh kode 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 menunjukkan cara membuatplugins.zip
. Isi contoh ini dapat dikombinasikan dengan plugin dan biner Anda yang lain menjadi satuplugins.zip
berkas.
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 ./
-
Anda akan melihat yang berikut di prompt perintah Anda:
oracle_plugin$ ls client.zip instantclient_18_5
-
Hapus
client.zip
berkas. Misalnya:rm client.zip
Zip file env_var_plugin_oracle.py
-
Tambahkan
env_var_plugin_oracle.py
file ke akar plugins.zip. Misalnya:zip plugins.zip env_var_plugin_oracle.py
-
plugins.zip Anda sekarang harus menyertakan yang berikut ini:
env_var_plugin_oracle.py instantclient_18_5/
Opsi konfigurasi aliran udara
Jika Anda menggunakan Apache Airflow v2, tambahkancore.lazy_load_plugins : False
sebagai opsi konfigurasi Apache Airflow. Untuk mempelajari lebih lanjut, lihatMenggunakan opsi konfigurasi untuk memuat plugin di 2.
Apa selanjutnya?
-
Pelajari cara mengunggah
requirements.txt
file dalam contoh ini ke bucket Amazon S3 AndaMenginstal dependensi Python. -
Pelajari cara mengunggah kode DAG dalam contoh ini ke
dags
folder di bucket Amazon S3 Anda diMenambahkan atau memperbarui DAG. -
Pelajari lebih lanjut tentang cara mengupload
plugins.zip
file dalam contoh ini ke bucket Amazon S3 AndaMenginstal plugin kustom.