View a markdown version of this page

Installazione delle dipendenze 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 Python

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

Prerequisiti

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

  • Autorizzazioni: l'amministratore Account AWS deve aver ottenuto l'accesso alla politica di controllo degli AmazonMWAAFullConsoleAccess accessi per il proprio ambiente. Inoltre, il tuo ruolo di esecuzione deve consentire all'ambiente Amazon MWAA di accedere alle AWS risorse utilizzate dal tuo ambiente.

  • Accesso: se hai bisogno di accedere ai repository pubblici per installare le dipendenze direttamente sul server web, il tuo ambiente deve essere configurato con l'accesso al server web della rete pubblica. Per ulteriori informazioni, vedi Modalità di accesso ad Apache Airflow.

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

Come funziona

Su Amazon MWAA, installi tutte le dipendenze Python caricando un file nel tuo bucket Amazon S3, quindi specificando la versione requirements.txt 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 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. Specifica la versione di questo file nel campo 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. È necessario completare questo passaggio una sola volta.

Panoramica delle dipendenze di Python

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

Posizione e limiti di dimensione delle dipendenze Python

Lo scheduler Apache Airflow e i worker cercano i pacchetti nel requirements.txt file e i pacchetti vengono installati nell'ambiente in. /usr/local/airflow/.local/bin

  • Limite di dimensione. Consigliamo un requirements.txt file che faccia riferimento a librerie la cui dimensione combinata è inferiore a 1 GB. Maggiore è il numero di librerie che Amazon MWAA deve installare, maggiore è il tempo di avvio di un ambiente. Sebbene Amazon MWAA non limiti esplicitamente le dimensioni delle librerie installate, se le dipendenze non possono essere installate entro dieci minuti, il servizio Fargate si interromperà 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: verifica le dipendenze di Python utilizzando l'utilità CLI di Amazon MWAA

  • L'utilità di interfaccia a riga di comando (CLI) replica localmente un ambiente Amazon Managed Workflows for Apache Airflow.

  • L'interfaccia a riga di comando crea localmente un'immagine del contenitore Docker simile a un'immagine di produzione Amazon MWAA. Puoi utilizzarla per 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, fai riferimento a aws-mwaa-docker-images on. https://github.com/aws/amazon-mwaa-docker-images GitHub

Fase due: creare il file requirements.txt

La sezione seguente descrive come specificare le dipendenze Python dal Python Package Index in un file. requirements.txt

Apache Airflow v3
  1. Esegui il test localmente. Aggiungete altre librerie in modo iterativo per trovare la giusta combinazione di pacchetti e delle relative versioni, prima di creare un requirements.txt file. Per eseguire l'utilità CLI di Amazon MWAA, consulta aws-mwaa-docker-images su. https://github.com/aws/amazon-mwaa-docker-images GitHub

  2. Consulta gli extra del pacchetto Apache Airflow. Per accedere a un elenco dei pacchetti installati per Apache Airflow v3 su Amazon MWAA, consulta aws-mwaa-docker-images sul sito Web. requirements.txt GitHub

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

    Nel seguente esempio, sostituiscili {Airflow-version} con la versione Airflow del tuo ambiente. Sostituisci {Python-version} con la versione Python compatibile con il tuo ambiente.

    Per informazioni sulla versione di Python compatibile con il tuo ambiente Apache Airflow, fai riferimento alle 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 nel tuo ambiente, non pip3 install riuscirà a impedire l'installazione di librerie incompatibili nell'ambiente. Se l'installazione non riesce per qualsiasi pacchetto, puoi accedere ai log degli errori per ogni componente di Apache Airflow (scheduler, worker e webserver) nel flusso di log corrispondente su Logs. CloudWatch Per ulteriori informazioni sui tipi di log, fare riferimento a. Accesso ai log Airflow in Amazon CloudWatch

    Aggiornamento delle versioni dei file con vincoli

    Se è necessario aggiornare le versioni nel file dei vincoli, fare riferimento al file dei vincoli.

  4. Pacchetti Apache Airflow. Aggiungete gli extra del pacchetto e la versione (). == Questo aiuta a prevenire l'installazione di pacchetti con lo stesso nome, ma con una versione diversa, nel tuo ambiente.

    apache-airflow[package-extra]==3.2.1
  5. Librerie Python. Aggiungi il nome del pacchetto e la versione (==) nel tuo requirements.txt file. Questo aiuta a prevenire l'applicazione automatica di PyPi.org un futuro aggiornamento interrotto.

    library == version
    Esempio Boto3 e psycopg2-binary

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

    boto3==1.42.84 botocore==1.42.84 psycopg2-binary==2.9.11

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

Apache Airflow v2
  1. Prova localmente. Aggiungete altre librerie in modo iterativo per trovare la giusta combinazione di pacchetti e delle relative versioni, prima di creare un requirements.txt file. Per eseguire l'utilità CLI di Amazon MWAA, consulta aws-mwaa-docker-images su. https://github.com/aws/amazon-mwaa-docker-images GitHub

  2. Consulta gli extra del pacchetto Apache Airflow. Per accedere a un elenco dei pacchetti installati per Apache Airflow v2 su Amazon MWAA, accedi a aws-mwaa-docker-images sul sito web. requirements.txt GitHub

  3. Aggiungi una dichiarazione di vincoli. Aggiungete il file dei vincoli per il vostro ambiente Apache Airflow v2 nella parte superiore del file. requirements.txt I file dei 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 ne specificherà uno per assicurarti che i pacchetti elencati nei tuoi requisiti siano compatibili con la versione di Apache Airflow in uso.

    Nel seguente esempio, sostituiscilo {Airflow-version} con la versione Airflow del tuo ambiente. Sostituisci {Python-version} con la versione Python compatibile con il tuo ambiente.

    Per informazioni sulla versione di Python compatibile con il tuo ambiente Apache Airflow, fai riferimento alle 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 nel tuo ambiente, non pip3 install riuscirà a impedire l'installazione di librerie incompatibili nell'ambiente. Se l'installazione non riesce per qualsiasi pacchetto, puoi accedere ai log degli errori per ogni componente di Apache Airflow (scheduler, worker e webserver) nel flusso di log corrispondente su Logs. CloudWatch Per ulteriori informazioni sui tipi di log, fare riferimento a. Accesso ai log Airflow in Amazon CloudWatch

    Aggiornamento delle versioni dei file con vincoli

    Se è necessario aggiornare le versioni nel file dei vincoli, fare riferimento al file dei vincoli.

  4. Pacchetti Apache Airflow. Aggiungete gli extra del pacchetto e la versione (). == Questo aiuta a prevenire l'installazione di pacchetti con lo stesso nome, ma con una versione diversa, nel tuo ambiente.

    apache-airflow[package-extra]==2.5.1
  5. Librerie Python. Aggiungi il nome del pacchetto e la versione (==) nel tuo requirements.txt file. Questo aiuta a prevenire l'applicazione automatica di PyPi.org un futuro aggiornamento interrotto.

    library == version
    Esempio Boto3 e psycopg2-binary

    Questo esempio è fornito a scopo dimostrativo. Le librerie boto e psycopg2-binary sono incluse nell'installazione 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. PyPi.org Questa versione potrebbe entrare in conflitto con altri pacchetti nel tuo. requirements.txt

Caricamento di requirements.txt su Amazon S3

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

Utilizzo di AWS CLI

La AWS Command Line Interface (AWS CLI) è uno strumento open source che puoi utilizzare per interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare i passaggi indicati 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://amzn-s3-demo-bucket/requirements.txt

Utilizzo della console Amazon S3

La console Amazon S3 è un'interfaccia utente basata sul Web che puoi utilizzare per creare e gestire le risorse nel tuo 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 nella console.

  4. Scegli Carica.

  5. Scegli Aggiungi file.

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

Installazione delle dipendenze Python nel tuo 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.

Specificare il percorso di requirements.txt sulla console Amazon MWAA (la prima volta)

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

  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegli Modifica.

  4. Nel codice DAG nel riquadro Amazon S3, scegli Browse S3 accanto al file dei requisiti - campo opzionale.

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

  6. Scegliere Choose (Scegli).

  7. Scegli Avanti, Aggiorna ambiente.

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

Specificare la versione di requirements.txt sulla console Amazon MWAA

Devi specificare la versione del tuo requirements.txt file sulla console Amazon MWAA ogni volta che carichi una nuova versione del tuo 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 codice DAG nel riquadro Amazon S3, scegli una requirements.txt versione nell'elenco a discesa.

  5. Scegli Avanti, Aggiorna ambiente.

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

Accesso ai log per il tuo requirements.txt

È possibile visualizzare i log di Apache Airflow per lo scheduler, pianificare i flussi di lavoro e analizzare la cartella. dags I passaggi seguenti descrivono come aprire il gruppo di log per lo scheduler sulla console Amazon MWAA e accedere ai log di Apache Airflow sulla console Logs. CloudWatch

Per accedere ai log di un file requirements.txt
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli un ambiente.

  3. Scegliete il gruppo di log di Airflow Scheduler nel riquadro Monitoraggio.

  4. Scegli l'requirements_install_ipaccesso Log streams.

  5. Consulta l'elenco dei pacchetti installati nell'ambiente all'indirizzo/usr/local/airflow/.local/bin. Ad 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, viene visualizzato 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

Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando aws-mwaa-docker-images on. https://github.com/aws/amazon-mwaa-docker-images GitHub