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à.
Gestione delle dipendenze Python in requirements.txt
Questa pagina descrive le best practice che consigliamo per installare e gestire le dipendenze Python in un requirements.txt
file per un ambiente Amazon Managed Workflows for Apache Airflow.
Indice
- Test DAGs con l'MWAACLIutilità Amazon
- Installazione delle dipendenze Python utilizzando il formato file dei requisiti PyPi .org
- Abilitazione dei log sulla console Amazon MWAA
- Visualizzazione dei log nella console Logs CloudWatch
- Visualizzazione degli errori nell'interfaccia utente di Apache Airflow
- Scenari di esempio requirements.txt
Test DAGs con l'MWAACLIutilità Amazon
-
L'utilità Command Line Interface (CLI) replica localmente un ambiente Amazon Managed Workflows for Apache Airflow.
-
CLICrea localmente un'immagine del contenitore Docker simile a un'immagine di MWAA produzione Amazon. Ciò consente di eseguire un ambiente Apache Airflow locale per sviluppare e testare DAGs plug-in personalizzati e dipendenze prima della distribuzione su Amazon. MWAA
-
Per eseguire il, vedi onCLI. aws-mwaa-local-runner
GitHub
Installazione delle dipendenze Python utilizzando il formato file dei requisiti PyPi .org
La sezione seguente descrive i diversi modi per installare le dipendenze Python in base al PyPi formato.org Requirements
Opzione uno: dipendenze Python dal Python Package Index
La sezione seguente descrive come specificare le dipendenze Python dall'indice dei pacchetti Python in un filerequirements.txt
Opzione due: Python wheels (.whl)
Una ruota Python è un formato di pacchetto progettato per spedire librerie con artefatti compilati. I pacchetti wheel offrono diversi vantaggi come metodo per installare le dipendenze in AmazonMWAA:
-
Installazione più rapida: i WHL file vengono copiati nel contenitore ZIP singolarmente e quindi installati localmente, senza dover scaricare ciascuno di essi.
-
Meno conflitti: è possibile determinare in anticipo la compatibilità delle versioni dei pacchetti. Di conseguenza, non è necessario elaborare in modo ricorsivo versioni compatibili.
pip
-
Maggiore resilienza: con le librerie ospitate esternamente, i requisiti a valle possono cambiare, con conseguente incompatibilità di versione tra i contenitori in un ambiente Amazon. MWAA Non dipendendo da una fonte esterna per le dipendenze, ogni contenitore ha le stesse librerie indipendentemente da quando viene istanziata ogni contenitore.
Consigliamo i seguenti metodi per installare le dipendenze Python da un archivio Python wheel () nel tuo. .whl
requirements.txt
Metodi
Utilizzo del plugins.zip
file su un bucket Amazon S3
Lo scheduler, i worker e il server web di Apache Airflow (per Apache Airflow v2.2.2 e versioni successive) cercano plugin personalizzati durante l'avvio nel contenitore Fargate gestito per il AWS vostro ambiente all'indirizzo. /usr/local/airflow/plugins/
Questo processo inizia prima dell'avvio delle dipendenze MWAA di Amazon *
pip3 install -r requirements.txt
for Python e del servizio Apache Airflow. Un plugins.zip
file può essere utilizzato per tutti i file che non si desidera modificare continuamente durante l'esecuzione dell'ambiente o per i quali non si desidera concedere l'accesso agli utenti che scrivono. DAGs Ad esempio, i file della ruota di libreria Python, i file di certificato e PEM i file di configurazioneYAML.
La sezione seguente descrive come installare una ruota contenuta nel plugins.zip
file sul tuo bucket Amazon S3.
-
Scarica i WHL file necessari Puoi usarli
pip download
con il tuo esistente requirements.txt
su Amazon MWAA local-runnero su un altro contenitore Amazon Linux 2 per risolvere e scaricare i file Python wheel necessari. $
pip3 download -r "$AIRFLOW_HOME/dags/requirements.txt" -d "$AIRFLOW_HOME/plugins"
$
cd "
$AIRFLOW_HOME
/plugins"$
zip "
$AIRFLOW_HOME
/plugins.zip" * -
Specificate il percorso nel vostro.
requirements.txt
Specificate la directory dei plugins nella parte superiore del file requirements.txt utilizzando--find-links
e istruite a pip
non effettuare l'installazione da altre fonti utilizzando--no-index
, come illustrato di seguito --find-links /usr/local/airflow/plugins --no-index
Esempio ruota in requirements.txt
L'esempio seguente presuppone che tu abbia caricato la ruota in un
plugins.zip
file nella radice del tuo bucket Amazon S3. Per esempio:--find-links /usr/local/airflow/plugins --no-index numpy
Amazon MWAA recupera la
numpy-1.20.1-cp37-cp37m-manylinux1_x86_64.whl
ruota dallaplugins
cartella e la installa nel tuo ambiente.
Utilizzando un WHL file ospitato su un URL
La sezione seguente descrive come installare una ruota ospitata su unURL. URLDeve essere accessibile pubblicamente o dall'interno dell'Amazon personalizzato VPC che hai specificato per il tuo MWAA ambiente Amazon.
-
Fornisci un URL. URLForniscili a una ruota della tua
requirements.txt
.Esempio archivio di ruote su un sito pubblico URL
L'esempio seguente scarica una ruota da un sito pubblico.
--find-links https://files.pythonhosted.org/packages/ --no-index
Amazon MWAA recupera la ruota dal file URL specificato e la installa nel tuo ambiente.
Nota
URLsnon sono accessibili da server Web privati che installano i requisiti in Amazon MWAA v2.2.2 e versioni successive.
Creazione di un WHL file da un DAG
Se disponi di un server Web privato che utilizza Apache Airflow v2.2.2 o versione successiva e non riesci a installare i requisiti perché il tuo ambiente non ha accesso a repository esterni, puoi utilizzare quanto segue per DAG prendere i MWAA requisiti Amazon esistenti e impacchettarli su Amazon S3:
from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago S3_BUCKET = 'my-s3-bucket' S3_KEY = 'backup/plugins_whl.zip' with DAG(dag_id="create_whl_file", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: cli_command = BashOperator( task_id="bash_command", bash_command=f"mkdir /tmp/whls;pip3 download -r /usr/local/airflow/requirements/requirements.txt -d /tmp/whls;zip -j /tmp/plugins.zip /tmp/whls/*;aws s3 cp /tmp/plugins.zip s3://
{S3_BUCKET}
/{S3_KEY}
" )
Dopo aver eseguito ilDAG, usa questo nuovo file come Amazon MWAAplugins.zip
, facoltativamente, impacchettato con altri plugin. Quindi, aggiorna il file requirements.txt
preceduto da e senza aggiungere. --find-links /usr/local/airflow/plugins
--no-index
--constraint
Questo metodo consente di utilizzare le stesse librerie offline.
Opzione tre: dipendenze Python ospitate su un repository privato conforme a PyPi PEP -503
La sezione seguente descrive come installare un extra di Apache Airflow ospitato su un ambiente privato con autenticazione. URL
-
Aggiungi nome utente e password come opzioni di configurazione di Apache Airflow. Per esempio:
-
foo.user
:YOUR_USER_NAME
-
foo.pass
:YOUR_PASSWORD
-
-
Crea il tuo file.
requirements.txt
Sostituisci i segnaposto nell'esempio seguente con i dati personali URL e il nome utente e la password che hai aggiunto come opzioni di configurazione di Apache Airflow. Per esempio:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com
-
Aggiungi eventuali librerie aggiuntive al tuo file.
requirements.txt
Per esempio:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com my-private-package==1.2.3
Abilitazione dei log sulla console Amazon MWAA
Il ruolo di esecuzione per il tuo MWAA ambiente Amazon richiede l'autorizzazione per inviare log a CloudWatch Logs. Per aggiornare le autorizzazioni di un ruolo di esecuzione, consulta. Ruolo di MWAA esecuzione di Amazon
È possibile abilitare i log di Apache Airflow a livelloINFO
,WARNING
, ERROR
o. CRITICAL
Quando scegli un livello di registro, Amazon MWAA invia i log per quel livello e tutti i livelli di gravità più elevati. Ad esempio, se abiliti i log a INFO
livello, Amazon MWAA invia INFO
i log e WARNING
ERROR
, e i livelli di CRITICAL
log a CloudWatch Logs. Ti consigliamo di abilitare i log di Apache Airflow a INFO
livello di Scheduler per visualizzare i log ricevuti per. requirements.txt
Visualizzazione dei log nella console Logs CloudWatch
È possibile visualizzare i log di Apache Airflow per Scheduler, pianificando i flussi di lavoro e analizzando la cartella. dags
I passaggi seguenti descrivono come aprire il gruppo di log per Scheduler sulla MWAA console Amazon e visualizzare i log di Apache Airflow sulla console Logs. CloudWatch
Per visualizzare i log di un requirements.txt
-
Apri la pagina Ambienti
sulla MWAA console Amazon. -
Scegli un ambiente.
-
Scegli il gruppo di log dello scheduler Airflow nel riquadro Monitoraggio.
-
Scegli il
requirements_install_ip
log in Log Streams. -
Dovresti vedere l'elenco dei pacchetti che sono stati installati nell'ambiente all'indirizzo
/usr/local/airflow/.local/bin
. Per esempio:Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1)) Downloading https://files.pythonhosted.org/packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))
-
Controlla l'elenco dei pacchetti e verifica se qualcuno di questi ha riscontrato un errore durante l'installazione. Se qualcosa è andato storto, potresti visualizzare un errore simile al seguente:
2021-03-05T14:34:42.731-07:00 No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4)) No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4))
Visualizzazione degli errori nell'interfaccia utente di Apache Airflow
Potresti anche voler controllare l'interfaccia utente di Apache Airflow per identificare se un errore può essere correlato a un altro problema. L'errore più comune che potresti riscontrare con Apache Airflow su Amazon MWAA è:
Broken DAG: No module named
x
Se vedi questo errore nell'interfaccia utente di Apache Airflow, è probabile che nel file manchi una dipendenza richiesta. requirements.txt
Accesso ad Apache Airflow
Hai bisogno Politica di accesso all'interfaccia utente di Apache Airflow: A mazonMWAAWeb ServerAccess delle autorizzazioni per il tuo AWS account in AWS Identity and Access Management (IAM) per visualizzare l'interfaccia utente di Apache Airflow.
Per accedere all'interfaccia utente di Apache Airflow
-
Apri la pagina Ambienti
sulla MWAA console Amazon. -
Scegli un ambiente.
-
Scegli Open Airflow UI.
Scenari di esempio requirements.txt
Puoi mescolare e abbinare diversi formati nel tuorequirements.txt
. L'esempio seguente utilizza una combinazione dei diversi modi per installare gli extra.
Esempio Extra su PyPi .org e su un sito pubblico URL
È necessario utilizzare l'--index-url
opzione quando si specificano pacchetti da PyPi .org, oltre ai pacchetti in un repository pubblicoURL, ad esempio un repository personalizzato conforme a PEP 503. URLs
aws-batch == 0.6 phoenix-letter >= 0.3 --index-url http://dist.repoze.org/zope2/2.10/simple zopelib