Saltar al contenido

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

4 minutos de lectura
0

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

Descripción corta

Amazon MWAA proporciona modos de acceso a servidores web de red pública y red privada.

Para instalar dependencias de Python en un entorno de Amazon MWAA con un servidor web privado, utiliza wheels .whl de Python.

Para instalar bibliotecas de Python en un entorno de Amazon MWAA, utiliza requirements.txt o plugins.zip. Cuando usas requirements.txt, pip instala los paquetes listados del índice de paquetes de Python (PyPI) de forma predeterminada. Si instalas bibliotecas o paquetes personalizados con artefactos compilados como archivos .whl, utiliza el archivo plugins.zip. Debes usar el archivo plugins.zip al instalar operaciones, enlaces, sensores o interfaces personalizados de Amazon MWAA. El complemento exporta variables de entorno, autenticación y archivos de configuración, como .crt y .yaml.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Asegúrate de completar los requisitos previos antes de empezar.

Configuración del entorno local de Amazon MWAA

Sigue estos pasos:

  1. Utiliza la AWS CLI para crear la imagen de Docker y, a continuación, configurar un entorno local de Amazon MWAA.

    Nota: El repositorio de Amazon MWAA proporciona la utilidad de la AWS CLI y replica un entorno de Amazon MWAA de forma local. Para obtener más información, consulta aws-mwaa-local-runner en el sitio web de GitHub.

  2. Agrega la biblioteca y las dependencias de Python al archivo requirements.txt.
    Nota: Tras descargar los complementos, asegúrate de que el archivo requirements.txt contiene las restricciones.

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

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

    Resultado esperado:

    Installing requirements.txtCollecting 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

Para obtener más información, consulta Instalación de dependencias de Python con el formato de archivo de requisitos de PyPi.org.

Creación de los archivos .whl a partir del archivo requirements.txt

Sigue estos pasos:

  1. Para conocer los requisitos del paquete, ejecuta el siguiente comando local-runner:

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

    Nota: Este comando descarga todos los archivos .whl en la carpeta aws-mwaa-local-runner/plugin. Tras ejecutar el comando package-requirements**, ** los archivos plugins.zip, el nuevo packaged_requirements.txt y constraints.txt estarán disponibles en el directorio requirement/ de la aplicación.

  2. Descarga los archivos plugins.zip, el nuevo packaged_requirements.txt y constraints.txt.

  3. Modifica el nuevo archivo packaged_requirements.txt para que apunte a /usr/local/airflow/dags/constraints.txt en lugar de a las restricciones públicas.

Carga del archivo constraints.txt

Puedes cargar el archivo contraints.txt en el directorio dag/ de los buckets de Amazon Simple Storage Service (Amazon S3) o incluir el archivo constraints.txt en el archivo plugins. Si cargas el archivo contraints.txt en el directorio dag/ de los buckets de Amazon S3, Amazon S3 modificará el archivo requirements.txt para su despliegue. Sin embargo, si incluyes el archivo constraints.txt en el archivo plugins, asegúrate de que el archivo packaged_requirements.txt apunte a /usr/local/airflow/dags/constraints.txt y no a las restricciones públicas.

Si cargas archivo constraints.txt en los complementos, usa el siguiente comando:

#aws-mwaa-local-runner % zip -j requirements/plugins.zip constraints.txt

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

Sigue estos pasos:

  1. Modifica el nuevo archivo packaged_requirements.txt. Si has cargado el archivo al directorio dags de Amazon S3, sustituye {OPTION} en el siguiente ejemplo por dags. O bien, si has agregado el archivo al archivo plugins.zip, sustituye {OPTION} por plugins:

    --find-links /usr/local/airflow/plugins  
    --no-index  
    --constraint "/usr/local/airflow/{OPTION}/constraints.txt"   
    ....snip.....
  2. Cargalos archivos plugins.zip y requirements.txt en el bucket de Amazon S3 de tu clúster de Amazon MWAA.

  3. Actualiza el entorno.

Solución de problemas de instalación de paquetes

Utiliza aws-mwaa-local-runner para probar los DAG, los complementos personalizados y las dependencias de Python. Ve el archivo de registro del grupo de registro del programador o de trabajo de Amazon MWAA.

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

Información relacionada

Opción dos de administración de dependencias de Python: wheels de Python (.whl)

Plugins