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
Questo argomento descrive come 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 dal momento in cui viene creata l'istanza di 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