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
Prasyarat
Untuk menggunakan kode sampel di halaman ini, Anda memerlukan yang berikut:
-
Pencatatan pekerja diaktifkan pada tingkat log apa pun,
CRITICAL
atau lebih tinggi, untuk lingkungan Anda. Untuk informasi selengkapnya tentang jenis MWAA log Amazon dan cara mengelola grup log Anda, lihat Melihat log Aliran Udara di Amazon CloudWatch
Izin
-
Tidak diperlukan izin tambahan untuk menggunakan contoh kode di halaman ini.
Persyaratan
Untuk menggunakan kode contoh pada halaman ini, tambahkan dependensi berikut ke Anda. requirements.txt
Untuk mempelajari selengkapnya, lihat Menginstal dependensi Python.
Contoh kode
Langkah-langkah berikut menjelaskan cara membuat DAG kode yang akan menguji plugin kustom.
-
Di prompt perintah Anda, arahkan ke direktori tempat DAG kode Anda disimpan. Sebagai contoh:
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 /usr/local/airflow/plugins
setiap MWAA penjadwal Amazon 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. Sebagai contoh:
docker pull amazonlinux docker run -it amazonlinux:latest /bin/bash
Prompt perintah Anda harus memanggil baris perintah bash. Sebagai contoh:
bash-4.2#
-
Instal fasilitas I/O asinkron 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. Sebagai contoh:
sudo yum install unzip
-
Buat
oracle_plugin
direktori. Sebagai contoh: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. Sebagai contoh:unzip *.zip
Ekstrak file dari Docker
-
Dalam prompt perintah baru, tampilkan dan tuliskan ID kontainer Docker Anda. Sebagai contoh:
docker container ls
Prompt perintah Anda harus mengembalikan semua kontainer dan kontainerIDs. Sebagai contoh:
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. Sebagai contoh: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 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 menunjukkan 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. Sebagai contoh:cd oracle_plugin
-
Zip
instantclient_18_5
direktori di plugins.zip. Sebagai contoh:zip -r ../plugins.zip ./
-
Anda akan melihat yang berikut di command prompt Anda:
oracle_plugin$ ls client.zip instantclient_18_5
-
Hapus
client.zip
file. Sebagai contoh:rm client.zip
Zip file env_var_plugin_oracle.py
-
Tambahkan
env_var_plugin_oracle.py
file ke root plugins.zip. Sebagai contoh:zip plugins.zip env_var_plugin_oracle.py
-
plugins.zip Anda sekarang harus menyertakan yang berikut:
env_var_plugin_oracle.py instantclient_18_5/
Opsi konfigurasi aliran udara
Jika Anda menggunakan Apache Airflow v2, tambahkan core.lazy_load_plugins : False
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 DAG kode dalam contoh ini ke
dags
folder di bucket Amazon S3 Anda. Menambahkan atau memperbarui DAG -
Pelajari lebih lanjut cara mengunggah
plugins.zip
file dalam contoh ini ke bucket Amazon S3 Anda. Menginstal plugin kustom