Come faccio a installare le librerie nel mio ambiente Amazon MWAA?

6 minuti di lettura
0

Desidero installare librerie nei miei Amazon Managed Workflows per un ambiente Apache Airflow (Amazon MWAA).

Descrizione breve

Usa i file requirements.txt e plugins.zip per installare le librerie Python in Amazon MWAA. Se si utilizza il file requirements.txt per installare i pacchetti, i pacchetti vengono installati dal Python Package Index (dal sito Web PyPI) per impostazione predefinita. Se spedisci librerie (file.whl) con artefatti compilati, usa il file plugins.zip per installare queste wheel Python.

Per le versioni di Amazon MWAA 2.2.2 e 2.4.3, l'accesso a Internet in uscita non è disponibile nell'opzione server Web privato. Amazon MWAA installa requisiti e plugin sul server Web nel cloud privato virtuale (VPC) del servizio Amazon MWAA. Questi requisiti includono un gateway NAT con accesso a Internet in uscita. Tuttavia, per le versioni precedenti di Amazon MWAA (2.0.2 e 1.10.12), i requisiti e i plugin non sono installati sul server Web per impostazione predefinita.

Per le versioni di Amazon MWAA 2.2.2 e 2.4.3, il runner locale di Amazon MWAA fornisce un'utilità a riga di comando per scaricare e impacchettare le dipendenze (.whl) e i requisiti di Python nel file plugins.zip.

Per tutte le versioni di Amazon MWAA, puoi utilizzare il file plugins.zip per installare operazioni Apache Airflow personalizzate, hook, sensori o interfacce. I plugin esportano variabili di ambiente, autenticazione e file di configurazione come .crt e .yaml.

Risoluzione

Installa le librerie usando .whl in ambienti con un server Web privato (Amazon MWAA versioni 2.2.2 e 2.4.3)

Configura il tuo ambiente locale Amazon MWAA

1.    Crea l'immagine Docker e configura un ambiente locale Amazon MWAA (dal sito Web GitHub). Il repository MWAA fornisce un'utilità dell'interfaccia della linea di comando (CLI) che replica localmente un ambiente Amazon MWAA.

2.    Aggiungi la libreria Python e le dipendenze a un file requirements.txt. 

3.    Utilizza il seguente script per testare il file requirements.txt:

#aws-mwaa-local-runner % ./mwaa-local-env test-requirements

L'output è simile al seguente: 

 Installing requirements.txt
Collecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz
Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)
    100% |████████████████████████████████| 3.6MB 365kB/s
...
...
...
Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch
  Running setup.py install for aws-batch ... done
Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

Costruisci i file.whl dal file requirements.txt

Esegui il seguente comando local-runner package-requirements per creare i file.whl dal file requirements.txt:

#aws-mwaa-local-runner % ./mwaa-local-env package-requirements

Il comando scarica tutti i file.whl nella cartella: aws-mwaa-local-runner/plugin.

Crea un file plugins.zip con file.whl e un vincolo Amazon MWAA

Scarica e copia il file constraints.txt nella directory del plugin. Quindi, esegui il seguente comando per creare il file plugins.zip: 

#aws-mwaa-local-runner % curl -o plugins/constraints.txt "https://raw.githubusercontent.com/apache/airflow/constraints-2.2.2/constraints-3.7.txt"
#aws-mwaa-local-runner % zip -j dags/plugins.zip plugins/constraints.txt

Crea un nuovo file requirements.txt che punti ai file.whl contenuti nel file plugins.zip

1. Crea il nuovo file requirements.txt. In uno strumento di testo a tua scelta, usa un formato simile al seguente:

=========new requirements.txt==========

--find-links /usr/local/airflow/plugins

--no-index

--constraint “/usr/local/airflow/plugins/constraints.txt”

aws-batch==0.6
====================================

2. Carica i file plugins.zip e requirements.txt nel bucket Amazon Simple Storage Service (Amazon S3) del tuo cluster MWAA. Quindi, aggiorna l'ambiente.

Usa le wheel Python per installare librerie personalizzate

Una wheel Python è un file di pacchetto con artefatti compilati. Per installare questo pacchetto, inserisci il file.whl in un file plugins.zip. Quindi, fai riferimento a questo file in un file requirements.txt. Dopo aver aggiunto il file.whl al file plugins.zip, aggiorna l'ambiente. Il file.whl viene spedito alla posizione del container Fargate di Amazon Elastic Container Service (Amazon ECS): /usr/local/airflow/plugins/

Installa le wheel Python

1.    Creare il file plugins.zip. Esegui il comando seguente per creare una directory locale dei plugin Amazon MWAA sul tuo sistema:

$ mkdir plugins

2.    Copia il file.whl nella directory dei plugin che hai creato. Esegui il seguente comando per modificare la directory in modo che punti alla directory locale dei plugin Airflow:

$ cd plugins

Esegui il comando seguente per confermare che i contenuti dispongano di autorizzazioni eseguibili:

plugins$ chmod -R 755

Esegui il seguente comando per comprimere i contenuti all'interno della cartella del plugin:

plugins$ zip -r plugins.zip .

3.    Includi il percorso del file.whl nel file requirements.txt (ad esempio, /usr/local/airflow/plugins/example_wheel.whl).

Nota: Assicurati di attivare il controllo delle versioni per il tuo bucket Amazon S3.

4.    Carica i file plugins.zip e requirements.txt in un bucket Amazon S3 (ad esempio, s3://example-bucket/plugins.zip).

5.    Specifica la versione di plugins.zip sulla console Amazon MWAA.

Installa operatori, hook, sensori o interfacce personalizzati

Amazon MWAA supporta il gestore di plugin integrato di Apache Airflow. Il gestore dei plugin consente di utilizzare operatori, hook, sensori o interfacce Apache Airflow personalizzati. Questi plugin personalizzati vengono inseriti nel file plugins.zip con una struttura di directory piatta e nidificata. Il contenuto del file plugins.zip viene scritto nei container di backend Amazon ECS Fargate all'indirizzo: /usr/local/airflow/plugins/. Per ulteriori informazioni, consulta Esempi di plugin personalizzati.

Crea un plugin personalizzato per generare variabili di ambiente di runtime

Crea un plugin personalizzato che generi variabili di ambiente di runtime nel tuo ambiente Amazon MWAA. Quindi, usa queste variabili di ambiente nel tuo codice Directed Acyclic Graph (DAG). Per ulteriori informazioni, consulta Creazione di un plugin personalizzato che generi variabili di ambiente di runtime.

Esporta PEM, .crt e file di configurazione (.yaml)

Se non è necessario aggiornare continuamente determinati file quando l'ambiente è in esecuzione, utilizza il file plugins.zip per distribuire i file. Puoi anche creare DAG e utilizzare plugins.zip per file che non richiedono l'accesso dell'utente (ad esempio certificati, PEM e file YAML di configurazione).

Il seguente comando di esempio raggruppa un file ca-certificates.crt in un file plugins.zip:

$ zip plugins.zip ca-certificates.crt

Dopo aver aggiornato l'ambiente con questo file plugins.zip, il file .crt viene sincronizzato nel percorso /usr/local/airflow/plugins/ca-certificates.crt su ciascuno dei container di lavoro. Quindi, i tuoi DAG accedono a questo file. Segui la stessa procedura per altri tipi di file.

Installa plugin e binari personalizzati

Puoi usare Oracle per Amazon MWAA per creare un plugin personalizzato e combinarlo con altri plugin e binari personalizzati nel tuo file plugins.zip. Ciò include pacchetti non Python. Per ulteriori informazioni, consulta Creazione di un plugin personalizzato con Oracle.

Per aggiungere file binari ai container o per impostare e modificare le variabili di ambiente, consulta Creazione di un plugin personalizzato con Apache Hive e Hadoop.

Risoluzione dei problemi relativi all'installazione dei pacchetti

Usa aws-mwaa-local-runner (dal sito Web di GitHub) per testare DAG, plugin personalizzati e dipendenze Python.

Visualizza il file di log. È possibile visualizzare il file dai gruppi di log di Apache Airflow Worker o Scheduler.

Importante: Prima di installare i pacchetti o il file plugins.zip, è consigliabile utilizzare l'utilità dell'interfaccia della linea di comando di Amazon MWAA per testare le dipendenze Python e il file plugins.zip.

Informazioni correlate

Plugin

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa