Come faccio a installare pacchetti personalizzati nel mio ambiente Amazon MWAA?

Ultimo aggiornamento: 03/03/2022

Voglio installare pacchetti personalizzati utilizzando plugins.zip nel mio ambiente Amazon Managed Workflows for Apache Airflow (Amazon MWAA).

Breve descrizione

Puoi installare le librerie Python in Amazon MWAA utilizzando i file requirements.txt e plugins.zip. Se installi i pacchetti utilizzando il file requirements.txt, i pacchetti vengono installati da PyPi.org per impostazione predefinita. Tuttavia, se hai bisogno di inviare librerie (file.whl) con artefatti compilati, puoi installare i wheel Python usando il file plugins.zip.

Utilizzando il file plugins.zip, puoi installare operatori, hook, sensori o interfacce Apache Airflow personalizzati semplicemente trascinando i file all'interno di un file plugins.zip. Questo file è scritto sui container di back-end Amazon ECS Fargate nella posizione /usr/local/airflow/plugins/. I plug-in possono anche essere usati per esportare variabili d'ambiente e file di autenticazione e configurazione, come .crt e .yaml.

Risoluzione

Installazione di librerie usando Python Wheels

Un wheel Python è un file pacchetto con artefatti compilati. Puoi installare questo pacchetto inserendo il file (.whl) in un file plugins.zip e quindi fare riferimento a questo file in requirements.txt. Quando aggiorni l'ambiente dopo aver aggiunto il file.whl in plugins.zip, il file.whl viene inviato nella posizione /usr/local/airflow/plugins/ nei container Fargate sottostanti di Amazon Elastic Container Service (Amazon ECS). Per installare Python Wheels, procedi come segue:

1.    Crea il file plugins.zip:

Crea una directory locale dei plugin Airflow sul tuo sistema eseguendo il seguente comando:

$ mkdir plugins

Copia il file .whl nella directory dei plugin che hai creato.

Cambia la directory in modo che punti alla directory locale dei plugin di Airflow eseguendo il seguente comando:

$ cd plugins
Esegui il seguente comando per assicurarti che i contenuti dispongano delle autorizzazioni eseguibili:

plugins$ chmod -R 755

Comprimi i contenuti all'interno della cartella dei plugin eseguendo il seguente comando:

plugins$ zip -r plugins.zip

2.    Includi il percorso del file.whl nel file requirements.txt (esempio: /usr/local/airflow/plugins/example_wheel.whl).

Nota: ricorda di attivare il controllo delle versioni per il tuo bucket Amazon Simple Storage Service (Amazon S3).

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

4.    Per modificare l'ambiente, apri la pagina Environments (Ambienti) nella console di Amazon MWAA.

5.    Seleziona l'ambiente dall'elenco, quindi scegli Edit (Modifica).

6.    Nella pagina Specify details (Specifica dettagli), nella sezione DAG code in Amazon S3 (Codice DAG in Amazon S3), esegui una delle seguenti operazioni in base al tuo caso d'uso:

Nota: se stai caricando il file plugins.zip o requirements.txt nel tuo ambiente per la prima volta, seleziona il file e scegli la versione. Se hai già caricato il file e lo hai aggiornato di recente, puoi saltare la selezione del file e scegliere solo la versione.

Scegli Browse S3 (Sfoglia S3) nel campo Plugins file - optional (File dei plug-in - opzionale).

Seleziona il file plugins.zip nel tuo bucket Amazon S3, quindi scegli Choose (Scegli).

Per Choose a version (Scegli una versione) in Plugins file - optional (File dei plug-in - opzionale), seleziona la versione più recente del file che hai caricato.

- oppure -

Scegli Browse S3 (Sfoglia) S3 in Requirements file - optional (File dei requisiti - opzionale).

Seleziona il file requirements.txt nel tuo bucket Amazon S3, quindi scegli Choose (Scegli).

Per Choose a version (Scegli una versione) in Requirements file - optional (File dei requisiti - opzionale), seleziona la versione più recente del file che hai caricato.

7.    Scegli Next (Avanti) e poi scegli Save (Salva).

Installazione di operatori, hook, sensori o interfacce personalizzati

Amazon MWAA supporta il gestore di plug-in integrato di Apache Airflow, che consente di utilizzare operatori, hook, sensori o interfacce Apache Airflow personalizzati. Questi plug-in personalizzati possono essere inseriti nel file plugins.zip utilizzando sia una struttura di directory piatta o nidificata. Per alcuni esempi di plug-in personalizzati, consulta Esempi di plug-in personalizzati.

Creazione di un plug-in personalizzato per generare variabili di ambiente runtime

Puoi anche creare un plug-in personalizzato che generi variabili di ambiente in fase di esecuzione nel tuo ambiente Amazon MWAA. Dopodiché puoi utilizzare queste variabili di ambiente nel codice DAG. Per ulteriori informazioni, consulta Creazione di un plug-in personalizzato che generi variabili di ambiente di runtime.

Esportazione di file PEM, .crt e di configurazione

Se non hai bisogno che file specifici vengano aggiornare continuamente durante l'esecuzione dell'ambiente, puoi usare plugins.zip per inviare questi file. Inoltre, puoi inserire file per i quali non è necessario concedere l'accesso agli utenti che scrivono DAG (ad esempio: file certificati (.crt), PEM e YAML di configurazione). Dopo aver compresso questi file in plugins.zip, carica plugins.zip in S3, quindi aggiorna l'ambiente. I file vengono replicati con le autorizzazioni richieste per accedere a /usr/local/airflow/plugins.

Puoi comprimere i certificati emessi da una CA personalizzati nel file plugins.zip eseguendo il seguente comando:

$ zip plugins.zip ca-certificates.crt
Il file ora si trova ora in /usr/local/airflow/plugins/ca-certificates.crt.

Per comprimere kube_config.yaml nel file plugins.zip, esegui il seguente comando:

$ zip plugins.zip kube_config.yaml
Il file ora si trova ora in /usr/local/airflow/plugins/kube_config.yaml.

Risoluzione dei problemi relativi al processo di installazione

Se riscontri problemi durante l'installazione di questi pacchetti, puoi testare i DAG, i plug-in personalizzati e le dipendenze Python in locale usando aws-mwaa-local-runner.

Per risolvere i problemi relativi all'installazione dei pacchetti Python utilizzando il file plugins.zip, puoi visualizzare il file di registro (requirements_install_ip) dai gruppi di registri Apache Airflow Worker o Scheduler.

Importante: è consigliabile testare le dipendenze Python e il file plugins.zip utilizzando l'utilità CLI di Amazon MWAA (aws-mwaa-local-runner) prima di installare i pacchetti o il file plugins.zip nell'ambiente Amazon MWAA.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?