¿Cómo instalo bibliotecas en mi entorno de Amazon MWAA?

7 minutos de lectura
0

Quiero instalar bibliotecas en mi Amazon Managed Workflows para un entorno de Apache Airflow (Amazon MWAA).

Descripción breve

Use los archivos requirements.txt y plugins.zip para instalar bibliotecas de Python en Amazon MWAA. Si usa el archivo requirements.txt para instalar paquetes, los paquetes se instalan desde el Índice de paquetes de Python (desde el sitio web de PyPI) de forma predeterminada. Si envía bibliotecas (archivos .whl) con artefactos compilados, use el archivo plugins.zip para instalar las «wheels» de Python.

No está disponible el acceso saliente a Internet en la opción de servidor web privado para las versiones 2.2.2 y 2.4.3 de Amazon MWAA. Amazon MWAA instala los requisitos y los complementos en el servidor web de la nube privada virtual (VPC) del servicio Amazon MWAA. Estos requisitos incluyen una puerta de enlace de NAT con acceso saliente a Internet. Sin embargo, en las versiones anteriores de Amazon MWAA (2.0.2 y 1.10.12), los requisitos y los complementos no están instalados en el servidor web de forma predeterminada.

Para las versiones 2.2.2 y 2.4.3 de Amazon MWAA, el ejecutor local de Amazon MWAA proporciona una línea de comandos para descargar y empaquetar las dependencias de Python (.whl) y los requisitos en el archivo plugins.zip.

Para todas las versiones de Amazon MWAA, puede utilizar el archivo plugins.zip para instalar operaciones, enlaces, sensores o interfaces personalizados de Apache Airflow. Los complementos exportan variables de entorno, autenticación y archivos de configuración como .crt y .yaml.

Solución

Instalación de bibliotecas con .whl en entornos con un servidor web privado (versiones 2.2.2 y 2.4.3 de Amazon MWAA)

Configurar el entorno local de Amazon MWAA

1.    Cree la imagen de Docker y configure un entorno local de Amazon MWAA (desde el sitio web de GitHub). El repositorio de MWAA proporciona una Interfaz de la línea de comandos (CLI) que replica un entorno de Amazon MWAA a nivel local.

2.    Añada la biblioteca y las dependencias de Python a un archivo requirements.txt. 

3.    Use el siguiente script para probar el archivo requirements.txt:

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

El resultado es similar al siguiente: 

 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

Crear los archivos .whl a partir del archivo requirements.txt

Ejecute el siguiente comando de local-runner package-requirements para crear los archivos .whl a partir del archivo requirements.txt:

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

El comando descarga todos los archivos .whl en la carpeta: aws-mwaa-local-runner/plugin.

Crear un archivo plugins.zip que incluya archivos .whl y una restricción de Amazon MWAA

Descargue y copie el archivo constraints.txt en el directorio del complemento. A continuación, ejecute el siguiente comando para crear el archivo 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

Crear un nuevo archivo requirements.txt que apunte a los archivos .whl que están empaquetados en el archivo plugins.zip

1. Cree el nuevo archivo requirements.txt. En la herramienta de texto que quiera, use un formato similar al siguiente:

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

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

--no-index

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

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

2. Cargue los archivos plugins.zip y requirements.txt al bucket de Amazon Simple Storage Service (Amazon S3) de su clúster de MWAA. A continuación, actualice el entorno.

Uso de las «wheels» de Python para instalar bibliotecas personalizadas

Una «wheel» de Python es un archivo de paquete con artefactos compilados. Para instalar el paquete, coloque el archivo .whl en un archivo plugins.zip. A continuación, derive el archivo a un archivo requirements.txt. Tras añadir el archivo .whl al archivo plugins.zip, actualice el entorno. El archivo .whl se envía a la ubicación del contenedor de Fargate de Amazon Elastic Container Service (Amazon ECS): /usr/local/airflow/plugins/

Instalar «wheels» de Python

1.    Cree el archivo plugins.zip. Ejecute el siguiente comando para crear un directorio local de complementos de Amazon MWAA en su sistema:

$ mkdir plugins

2.    Copie el archivo .whl y péguelo en el directorio de complementos que creó. Ejecute el siguiente comando para cambiar el directorio para que apunte a su directorio local de complementos de Airflow:

$ cd plugins

Ejecute el siguiente comando para confirmar que el contenido cuenta con permisos ejecutables:

plugins$ chmod -R 755

Ejecute el siguiente comando para comprimir el contenido de la carpeta de complementos:

plugins$ zip -r plugins.zip .

3.    Incluya la ruta del archivo .whl en el archivo requirements.txt (por ejemplo, /usr/local/airflow/plugins/example_wheel.whl).

Nota: Asegúrese de activar el control de versiones en su bucket de Amazon S3.

4.    Suba los archivos plugins.zip y requirements.txt a un bucket de Amazon S3 (por ejemplo, s3://example-bucket/plugins.zip).

5.    Especifique la versión de plugins.zip en la consola de Amazon MWAA.

Instalación de operadores, enlaces, sensores o interfaces personalizados

Amazon MWAA es compatible con el administrador de complementos integrado de Apache Airflow. El administrador de complementos le permite utilizar operadores, enlaces, sensores o interfaces personalizados de Apache Airflow. Estos complementos personalizados se colocan en el archivo plugins.zip ya sea con una estructura de directorios fija o anidada. El contenido del archivo plugins.zip se escribe en los contenedores de Fargate de Amazon ECS del backend en: /usr/local/airflow/plugins/. Para obtener más información, consulte Ejemplos de complementos personalizados.

Crear un complemento personalizado para generar variables de entorno de ejecución

Cree un complemento personalizado que genere variables de entorno de ejecución en su entorno de Amazon MWAA. A continuación, use estas variables de entorno en su código de grafo acíclico dirigido (DAG). Para obtener más información, consulte Creación de un complemento personalizado que genere variables de entorno de ejecución.

Exportar archivos PEM, .crt y de configuración (.yaml)

Si no necesita modificar ciertos archivos de forma continua cuando el entorno está en ejecución, use el archivo plugins.zip para distribuirlos. También puede crear DAG y usar el archivo plugins.zip para archivos que no requieran acceso del usuario (por ejemplo, archivos de certificado, PEM y YAML de configuración).

El siguiente comando de ejemplo agrupa un archivo ca-certificates.crt en un archivo plugins.zip:

$ zip plugins.zip ca-certificates.crt

Tras modificar el entorno con este archivo plugins.zip, el archivo.crt se sincroniza en la ruta /usr/local/airflow/plugins/ca-certificates.crt de cada uno de los contenedores de trabajo. A continuación, sus DAG acceden al archivo. Siga el mismo proceso para otros tipos de archivos.

**Instalar complementos y binarios personalizados **

Puede usar Oracle para Amazon MWAA para crear un complemento personalizado y combinarlo con otros complementos y archivos binarios personalizados en su archivo plugins.zip. Esto incluye paquetes que no son de Python. Para obtener más información, consulte Creación de un complemento personalizado con Oracle.

Para añadir archivos binarios a los contenedores o configurar y modificar variables de entorno, consulte Creación de un complemento personalizado con Apache Hive y Hadoop.

Solución de problemas de instalación de paquetes

Use aws-mwaa-local-runner (del sitio web de GitHub) para probar los DAG, los complementos personalizados y las dependencias de Python.

Entre en el archivo de registro. Puede ver el archivo desde los grupos de registro de Apache Airflow Worker o Scheduler.

Importante: Antes de instalar los paquetes o el archivo plugins.zip, se recomienda usar la CLI de Amazon MWAA para probar las dependencias de Python y el archivo plugins.zip.

Información relacionada

Complementos

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año