Installazione delle dipendenze in Python - Amazon Managed Workflows for Apache Airflow

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à.

Installazione delle dipendenze in Python

Una dipendenza Python è qualsiasi pacchetto o distribuzione non incluso nell'installazione base di Apache Airflow per la tua versione di Apache Airflow nel tuo ambiente Amazon Managed Workflows for Apache Airflow. Questa pagina descrive i passaggi per installare le dipendenze Python di Apache Airflow nell'ambiente Amazon MWAA utilizzando un file requirements.txt nel bucket Amazon S3.

Prerequisiti

Avrai bisogno di quanto segue prima di completare i passaggi di questa pagina.

  • Autorizzazioni: al tuo AWS account deve essere stato concesso dall'amministratore l'accesso alla politica di controllo degli FullConsoleaccessi di AmazonMWAA per il tuo ambiente. Inoltre, il tuo ambiente Amazon MWAA deve essere autorizzato dal tuo ruolo di esecuzione ad accedere alle AWS risorse utilizzate dal tuo ambiente.

  • Accesso: se è necessario accedere agli archivi pubblici per installare le dipendenze direttamente sul server Web, l'ambiente deve essere configurato con l'accesso al server Web di rete pubblica. Per ulteriori informazioni, consulta Modalità di accesso Apache Airflow.

  • Configurazione Amazon S3 : il bucket Amazon S3 utilizzato per archiviare i DAGplugins.zip, i plug-in personalizzati e le dipendenze requirements.txt Python deve essere configurato con Public Access Blocked e Versioning Enabled.

Come funziona

Su Amazon MWAA, installi tutte le dipendenze Python caricando un file nel requirements.txt tuo bucket Amazon S3, quindi specificando la versione del file sulla console Amazon MWAA ogni volta che aggiorni il file. Amazon MWAA viene eseguito pip3 install -r requirements.txt per installare le dipendenze Python sullo scheduler Apache Airflow e su ciascuno dei worker.

Per eseguire le dipendenze di Python nel tuo ambiente, devi fare tre cose:

  1. Crea un requirements.txt file localmente.

  2. Carica il file locale requirements.txt nel tuo bucket Amazon S3.

  3. Specificare la versione di questo file nel campo File dei requisiti sulla console Amazon MWAA.

Nota

Se è la prima volta che crei e carichi un requirements.txt file nel tuo bucket Amazon S3, devi anche specificare il percorso del file sulla console Amazon MWAA. Devi completare questo passaggio solo una volta.

Panoramica delle dipendenze in Python

Puoi installare gli extra di Apache Airflow e altre dipendenze Python dalle dipendenze Python Package Index (.orgPyPi), Python wheels (.whl) o Python ospitate su un repository privato conforme a /PEP-503 nel tuo ambiente. PyPi

Limiti di posizione e dimensione delle dipendenze in Python

Apache Airflow Scheduler e Workers cercano plugin personalizzati durante l'avvio sul contenitore Fargate gestito da AWS Fargate per il vostro ambiente in. /usr/local/airflow/plugins

  • Limite di dimensione. Consigliamo un requirements.txt file che faccia riferimento a librerie la cui dimensione combinata è inferiore a 1 GB. Più librerie Amazon MWAA deve installare, più lungo è il tempo di avvio in un ambiente. Sebbene Amazon MWAA non limiti esplicitamente la dimensione delle librerie installate, se le dipendenze non possono essere installate entro dieci minuti, il servizio Fargate andrà in timeout e tenterà di ripristinare l'ambiente a uno stato stabile.

Creazione di un file requirements.txt

I passaggi seguenti descrivono i passaggi consigliati per creare un file requirements.txt localmente.

Fase uno: testare le dipendenze di Python utilizzando l'utilità CLI di Amazon MWAA

  • L'utilità CLI (Command Line Interface) replica localmente un ambiente Amazon Managed Workflows for Apache Airflow.

  • La CLI crea localmente un'immagine del contenitore Docker simile a un'immagine di produzione Amazon MWAA. Ciò consente di eseguire un ambiente Apache Airflow locale per sviluppare e testare DAG, plug-in personalizzati e dipendenze prima della distribuzione su Amazon MWAA.

  • Per eseguire la CLI, consulta aws-mwaa-local-runner su. GitHub

Fase due: creare il requirements.txt

La sezione seguente descrive come specificare le dipendenze Python dall'indice dei pacchetti Python in un file. requirements.txt

Apache Airflow v2
  1. Esegui il test localmente. Aggiungi altre librerie in modo iterativo per trovare la giusta combinazione di pacchetti e le relative versioni, prima di creare un requirements.txt file. Per eseguire l'utilità CLI di Amazon MWAA, consulta aws-mwaa-local-runner su. GitHub

  2. Consulta gli extra del pacchetto Apache Airflow. Per visualizzare un elenco dei pacchetti installati per Apache Airflow v2 su Amazon MWAA, consulta Amazon MWAA local runner sul sito Web. requirements.txt GitHub

  3. Aggiungi una dichiarazione di vincoli. Aggiungi il file dei vincoli per il tuo ambiente Apache Airflow v2 nella parte superiore del file. requirements.txt I file di vincoli di Apache Airflow specificano le versioni del provider disponibili al momento del rilascio di Apache Airflow.

    A partire da Apache Airflow v2.7.2, il file dei requisiti deve includere una dichiarazione. --constraint Se non fornisci un vincolo, Amazon MWAA te ne specificherà uno per garantire che i pacchetti elencati nei tuoi requisiti siano compatibili con la versione di Apache Airflow che stai utilizzando.

    Nell'esempio seguente, sostituisci {environment-version} con il numero di versione del tuo ambiente e {Python-version} con la versione di Python compatibile con il tuo ambiente.

    Per informazioni sulla versione di Python compatibile con il tuo ambiente Apache Airflow, consulta Versioni di Apache Airflow.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Se il file dei vincoli determina che il xyz==1.0 pacchetto non è compatibile con altri pacchetti dell'ambiente, non pip3 install riuscirà a impedire l'installazione di librerie incompatibili nell'ambiente. Se l'installazione di qualsiasi pacchetto non riesce, è possibile visualizzare i log degli errori per ogni componente di Apache Airflow (lo scheduler, il worker e il server web) nel flusso di log corrispondente su Logs. CloudWatch Per ulteriori informazioni sui tipi di registro, vedere. Visualizzazione dei log di Airflow in Amazon CloudWatch

  4. Pacchetti Apache Airflow. Aggiungi gli extra del pacchetto e la versione (). == Questo aiuta a evitare che pacchetti con lo stesso nome, ma con una versione diversa, vengano installati nell'ambiente.

    apache-airflow[package-extra]==2.5.1
  5. Librerie Python. Aggiungi il nome del pacchetto e la versione (==) nel tuo requirements.txt file. In questo modo si evita l'applicazione automatica di future interruzioni del PyPisito .org.

    library == version
    Esempio Boto3 e psycopg2-binary

    Questo esempio viene fornito a scopo dimostrativo. Le librerie boto e psycopg2-binary sono incluse nell'installazione di base di Apache Airflow v2 e non devono essere specificate in un file. requirements.txt

    boto3==1.17.54 boto==2.49.0 botocore==1.20.54 psycopg2-binary==2.8.6

    Se viene specificato un pacchetto senza una versione, Amazon MWAA installa la versione più recente del pacchetto da .org. PyPi Questa versione può entrare in conflitto con altri pacchetti presenti nel tuo. requirements.txt

Apache Airflow v1
  1. Esegui il test localmente. Aggiungi altre librerie in modo iterativo per trovare la giusta combinazione di pacchetti e le relative versioni, prima di creare un requirements.txt file. Per eseguire l'utilità CLI di Amazon MWAA, consulta aws-mwaa-local-runner su. GitHub

  2. Consulta gli extra del pacchetto Airflow. Consulta l'elenco dei pacchetti disponibili per Apache Airflow v1.10.12 all'indirizzo https://raw.githubusercontent.com/apache/airflow/constraints-1.10.12/constraints-3.7.txt.

  3. Aggiungere il file dei vincoli. Aggiungi il file dei vincoli per Apache Airflow v1.10.12 nella parte superiore del file. requirements.txt Se il file dei vincoli determina che il xyz==1.0 pacchetto non è compatibile con altri pacchetti presenti nell'ambiente, non pip3 install riuscirà a impedire l'installazione di librerie incompatibili nell'ambiente.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-1.10.12/constraints-3.7.txt"
  4. Pacchetti Apache Airflow v1.10.12. Aggiungi gli extra del pacchetto Airflow e la versione Apache Airflow v1.10.12 (). == Questo aiuta a prevenire l'installazione di pacchetti con lo stesso nome, ma con una versione diversa, nell'ambiente.

    apache-airflow[package]==1.10.12
    Esempio Secure Shell (SSH)

    Il seguente requirements.txt file di esempio installa SSH per Apache Airflow v1.10.12.

    apache-airflow[ssh]==1.10.12
  5. Librerie Python. Aggiungi il nome del pacchetto e la versione (==) nel tuo requirements.txt file. In questo modo si evita l'applicazione automatica di future interruzioni del PyPisito .org.

    library == version
    Esempio Boto3

    Il seguente requirements.txt file di esempio installa la libreria Boto3 per Apache Airflow v1.10.12.

    boto3 == 1.17.4

    Se viene specificato un pacchetto senza una versione, Amazon MWAA installa la versione più recente del pacchetto da .org. PyPi Questa versione può entrare in conflitto con altri pacchetti presenti nel tuo. requirements.txt

Caricamento requirements.txt su Amazon S3

Puoi utilizzare la console Amazon S3 o il AWS Command Line Interface (AWS CLI) per caricare un requirements.txt file nel tuo bucket Amazon S3.

Usando il AWS CLI

Il AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare la procedura descritta in questa pagina, è necessario quanto segue:

Per caricare utilizzando il AWS CLI
  1. Usa il seguente comando per elencare tutti i tuoi bucket Amazon S3.

    aws s3 ls
  2. Usa il seguente comando per elencare i file e le cartelle nel bucket Amazon S3 per il tuo ambiente.

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. Il comando seguente carica un requirements.txt file in un bucket Amazon S3.

    aws s3 cp requirements.txt s3://YOUR_S3_BUCKET_NAME/requirements.txt

Utilizzo della console Amazon S3

La console Amazon S3 è un'interfaccia utente basata sul Web che consente di creare e gestire le risorse nel bucket Amazon S3.

Per caricare utilizzando la console Amazon S3
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Seleziona il link del bucket S3 nel codice DAG nel riquadro S3 per aprire il bucket di archiviazione sulla console Amazon S3.

  4. Scegli Carica.

  5. Scegli Aggiungi file.

  6. Seleziona la copia locale del tuorequirements.txt, scegli Carica.

Installazione delle dipendenze Python nel proprio ambiente

Questa sezione descrive come installare le dipendenze caricate nel bucket Amazon S3 specificando il percorso del file requirements.txt e specificando la versione del file requirements.txt ogni volta che viene aggiornato.

Specificazione del percorso requirements.txt sulla console Amazon MWAA (la prima volta)

Se è la prima volta che crei e carichi un requirements.txt file nel tuo bucket Amazon S3, devi anche specificare il percorso del file sulla console Amazon MWAA. Devi completare questo passaggio solo una volta.

  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegli Modifica.

  4. Nel riquadro del codice DAG di Amazon S3, scegli Browse S3 accanto al file dei requisiti (campo opzionale).

  5. Seleziona il requirements.txt file nel tuo bucket Amazon S3.

  6. Scegliere Choose (Scegli).

  7. Scegli Avanti, Aggiorna ambiente.

È possibile iniziare a utilizzare i nuovi pacchetti subito dopo il completamento dell'aggiornamento dell'ambiente.

Specificazione della requirements.txt versione sulla console Amazon MWAA

È necessario specificare la versione del requirements.txt file sulla console Amazon MWAA ogni volta che si carica una nuova versione del file requirements.txt nel bucket Amazon S3.

  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegli Modifica.

  4. Nel riquadro del codice DAG di Amazon S3, scegli requirements.txt una versione nell'elenco a discesa.

  5. Scegli Avanti, Aggiorna ambiente.

È possibile iniziare a utilizzare i nuovi pacchetti subito dopo il completamento dell'aggiornamento dell'ambiente.

Visualizzazione dei log per il requirements.txt

Puoi 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 console Amazon MWAA e visualizzare i log di Apache Airflow sulla console Logs. CloudWatch

Per visualizzare i log di un requirements.txt
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegli il gruppo di log dello scheduler Airflow nel riquadro Monitoraggio.

  4. Scegli il requirements_install_ip log in Log Streams.

  5. 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))
  6. 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))

Fasi successive