Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di un plug-in personalizzato con Oracle
L'esempio seguente illustra i passaggi per creare un plug-in personalizzato utilizzando Oracle per Amazon MWAA e può essere combinato con altri plug-in e binari personalizzati nel file plugins.zip.
Indice
Versione
Prerequisiti
Per utilizzare il codice di esempio in questa pagina, avrai bisogno di quanto segue:
-
Registrazione dei dati dei lavoratori abilitata a qualsiasi livello di registro,
CRITICAL
o superiore, per il tuo ambiente. Per ulteriori informazioni sui tipi di MWAA log di Amazon e su come gestire i gruppi di log, consulta Visualizzazione dei log di Airflow in Amazon CloudWatch
Autorizzazioni
-
Non sono necessarie autorizzazioni aggiuntive per utilizzare l'esempio di codice in questa pagina.
Requisiti
Per utilizzare il codice di esempio in questa pagina, aggiungi le seguenti dipendenze al tuo. requirements.txt
Per ulteriori informazioni, consulta Installazione delle dipendenze in Python.
Esempio di codice
I passaggi seguenti descrivono come creare il DAG codice che testerà il plug-in personalizzato.
-
Nel prompt dei comandi, accedi alla directory in cui è memorizzato il DAG codice. Per esempio:
cd dags
-
Copia il contenuto del seguente esempio di codice e salvalo localmente con nome.
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 )
Create il plugin personalizzato
Questa sezione descrive come scaricare le dipendenze, creare il plugin personalizzato e il file plugins.zip.
Scarica le dipendenze
Amazon MWAA estrarrà il contenuto di plugins.zip /usr/local/airflow/plugins
in ogni container Amazon MWAA scheduler e worker. Viene utilizzato per aggiungere file binari al tuo ambiente. I passaggi seguenti descrivono come assemblare i file necessari per il plug-in personalizzato.
Estrai l'immagine del contenitore Amazon Linux
-
Nel prompt dei comandi, recupera l'immagine del contenitore Amazon Linux ed esegui il contenitore localmente. Per esempio:
docker pull amazonlinux docker run -it amazonlinux:latest /bin/bash
Il prompt dei comandi dovrebbe richiamare una riga di comando bash. Per esempio:
bash-4.2#
-
Installa la struttura di I/O asincrona nativa di Linux (libaio).
yum -y install libaio
-
Tieni aperta questa finestra per i passaggi successivi. Copieremo localmente i seguenti file:
lib64/libaio.so.1
,lib64/libaio.so.1.0.0
,lib64/libaio.so.1.0.1
.
Scarica la cartella del client
-
Installa il pacchetto unzip localmente. Per esempio:
sudo yum install unzip
-
Crea una directory
oracle_plugin
. Per esempio:mkdir oracle_plugin cd oracle_plugin
-
Utilizzare il seguente comando curl per scaricare il file instantclient-basic-linux.x64-18.5.0.0.0dbru.zip da Oracle Instant Client Downloads per 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
-
Decomprimi il file
client.zip
. Per esempio:unzip *.zip
Estrai file da Docker
-
In un nuovo prompt dei comandi, visualizza e annota l'ID del contenitore Docker. Per esempio:
docker container ls
Il prompt dei comandi dovrebbe restituire tutti i contenitori e i relativi. IDs Per esempio:
debc16fd6970
-
Nella tua
oracle_plugin
directory, estrai ilib64/libaio.so.1.0.1
filelib64/libaio.so.1
lib64/libaio.so.1.0.0
,,instantclient_18_5
nella cartella locale. Per esempio: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 personalizzato
Apache Airflow eseguirà il contenuto dei file Python nella cartella plugins all'avvio. Viene utilizzato per impostare e modificare le variabili di ambiente. I passaggi seguenti descrivono il codice di esempio per il plug-in personalizzato.
-
Copiate il contenuto del seguente esempio di codice e salvatelo localmente con nome
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
I passaggi seguenti mostrano come creare ilplugins.zip
. Il contenuto di questo esempio può essere combinato con gli altri plugin e binari in un unico plugins.zip
file.
Comprimi il contenuto della cartella dei plugin
-
Nel prompt dei comandi, accedi alla
oracle_plugin
directory. Per esempio:cd oracle_plugin
-
Comprimi la
instantclient_18_5
directory in plugins.zip. Per esempio:zip -r ../plugins.zip ./
-
Dovresti vedere quanto segue nel prompt dei comandi:
oracle_plugin$ ls client.zip instantclient_18_5
-
Rimuovi il
client.zip
file. Per esempio:rm client.zip
Comprimi il file env_var_plugin_oracle.py
-
Aggiungi il
env_var_plugin_oracle.py
file alla radice del file plugins.zip. Per esempio:zip plugins.zip env_var_plugin_oracle.py
-
Il tuo plugins.zip dovrebbe ora includere quanto segue:
env_var_plugin_oracle.py instantclient_18_5/
Opzioni di configurazione del flusso d'aria
Se utilizzi Apache Airflow v2, aggiungilo core.lazy_load_plugins : False
come opzione di configurazione Apache Airflow. Per saperne di più, consulta Usare le opzioni di configurazione per caricare i plugin in 2.
Fasi successive
-
Scopri come caricare il
requirements.txt
file in questo esempio nel tuo bucket Amazon S3 in. Installazione delle dipendenze in Python -
Scopri come caricare il DAG codice in questo esempio
dags
nella cartella del tuo bucket Amazon S3 in. Aggiunta o aggiornamento di DAG -
Scopri di più su come caricare il
plugins.zip
file in questo esempio nel tuo bucket Amazon S3 in. Installazione di plugin personalizzati