Instalación de dependencias de Python - Amazon Managed Workflows para Apache Airflow

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Instalación de dependencias de Python

Una dependencia de Python es cualquier paquete o distribución que no esté incluido en la instalación base de Apache Airflow para su versión de Apache Airflow en su entorno de Amazon Managed Workflows para Apache Airflow. En esta página se describen los pasos para instalar las dependencias de Python de Apache Airflow en su MWAA entorno de Amazon mediante un requirements.txt archivo de su bucket de Amazon S3.

Requisitos previos

Para poder llevar a cabo los pasos de esta página, necesitará lo siguiente.

  • Permisos: su administrador debe haber concedido a su AWS cuenta el acceso a la política de control de mazonMWAAFull ConsoleAccess acceso A de su entorno. Además, su rol de ejecución debe permitir que su MWAA entorno de Amazon acceda a los AWS recursos que utiliza su entorno.

  • Acceso: si tiene que acceder a los repositorios públicos para instalar dependencias directamente en el servidor web, su entorno debe estar configurado con acceso a un servidor web de red pública. Para obtener más información, consulte Modos de acceso de Apache Airflow.

  • Configuración de Amazon S3: el bucket de Amazon S3 que se utiliza para almacenar los complementos personalizados y las dependencias de Python requirements.txt debe estar configurado con el acceso público bloqueado y el control de versiones activado. DAGs plugins.zip

Funcionamiento

En AmazonMWAA, para instalar todas las dependencias de Python, debe cargar un requirements.txt archivo en su bucket de Amazon S3 y, a continuación, especificar la versión del archivo en la MWAA consola de Amazon cada vez que actualice el archivo. Amazon MWAA se ejecuta pip3 install -r requirements.txt para instalar las dependencias de Python en el programador de Apache Airflow y en cada uno de los trabajadores.

Para ejecutar las dependencias de Python en su entorno, debe hacer tres cosas:

  1. Cree un archivo requirements.txt local.

  2. Cargue el requirements.txt local en su bucket de Amazon S3.

  3. Especifica la versión de este archivo en el campo Archivo de requisitos de la MWAA consola de Amazon.

nota

Si es la primera vez que crea y carga un requirements.txt archivo en su bucket de Amazon S3, también debe especificar la ruta al archivo en la MWAA consola de Amazon. Solo necesita realizar este paso una vez.

Descripción general de las dependencias de Python

Puede instalar los extras de Apache Airflow y otras dependencias de Python desde el Python Package Index (PyPi.org), Python wheels (.whl) o las dependencias de Python alojadas en un repositorio privado compatible con PyPi PEP /-503 en su entorno.

Límites de ubicación y tamaño de las dependencias de Python

El programador de Apache Airflow y los Workers buscan los paquetes en el requirements.txt archivo y los paquetes se instalan en el entorno en. /usr/local/airflow/.local/bin

  • Límite de tamaño. Recomendamos un archivo requirements.txt que haga referencia a bibliotecas cuyo tamaño combinado sea inferior a 1 GB. Cuantas más bibliotecas MWAA necesite instalar Amazon, mayor será el tiempo de inicio de un entorno. Aunque Amazon MWAA no limita el tamaño de las bibliotecas instaladas de forma explícita, si las dependencias no se pueden instalar en diez minutos, el servicio Fargate agotará el tiempo de espera e intentará revertir el entorno a un estado estable.

Creación de un archivo requirements.txt

En los pasos siguientes se describen los pasos que recomendamos para crear un archivo requirements.txt de forma local.

Paso uno: probar las dependencias de Python con la utilidad Amazon MWAA CLI

  • La utilidad interface de línea de comandos (CLI) replica localmente un entorno de Amazon Managed Workflows para Apache Airflow.

  • CLICrea una imagen de contenedor Docker localmente similar a una imagen de MWAA producción de Amazon. Esto te permite ejecutar un entorno local de Apache Airflow para desarrollar y probar DAGs complementos personalizados y dependencias antes de implementarlos en Amazon. MWAA

  • Para ejecutar elCLI, consulte la aws-mwaa-local-runneropción. GitHub

Paso dos: crear el requirements.txt

La siguiente sección describe cómo especificar las dependencias de Python desde el Python Package Index en un archivo requirements.txt.

Apache Airflow v2
  1. Hacer una prueba local. Añada bibliotecas adicionales de forma iterativa para encontrar la combinación adecuada de paquetes y sus versiones antes de crear un archivo requirements.txt. Para ejecutar la MWAA CLI utilidad Amazon, consulte aws-mwaa-local-runnerOn GitHub.

  2. Revise los extras del paquete Apache Airflow. Para ver una lista de los paquetes instalados para Apache Airflow v2 en AmazonMWAA, consulte Amazon MWAA local runner requirements.txt en el sitio GitHub web.

  3. Añada instrucciones respecto a las restricciones. Añada el archivo de restricciones para su entorno Apache Airflow v2 en la parte superior del archivo requirements.txt. Los archivos de restricciones de Apache Airflow especifican las versiones de proveedores disponibles en el momento de la publicación de Apache Airflow.

    A partir de la versión 2.7.2 de Apache Airflow, su archivo de requisitos debe incluir una instrucción --constraint. Si no especificas ninguna restricción, Amazon te MWAA especificará una para garantizar que los paquetes que figuran en tus requisitos sean compatibles con la versión de Apache Airflow que utilices.

    En el siguiente ejemplo, sustituya {environment-version} con el número de versión de su entorno y {Python-version} con la versión de Python que sea compatible con su entorno.

    Para obtener información sobre la versión de Python compatible con su entorno Apache Airflow, consulte Versiones de Apache Airflow.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Si el archivo de restricciones determina que el xyz==1.0 paquete no es compatible con otros paquetes de su entorno, pip3 install fallará para evitar que se instalen bibliotecas incompatibles en su entorno. Si se produce un error en la instalación de algún paquete, puede ver los registros de errores de cada componente de Apache Airflow (el programador, el equipo de trabajo y el servidor web) en el flujo de registro correspondiente en CloudWatch Logs. Para más información sobre los tipos de registros, consulte Visualización de los registros de flujo de aire en Amazon CloudWatch.

  4. Paquetes de Apache Airflow. Añada los extras del paquete y la versión (==). Esto ayuda a evitar que se instalen en su entorno paquetes del mismo nombre, pero de una versión diferente.

    apache-airflow[package-extra]==2.5.1
  5. Bibliotecas Python. Añada el nombre del paquete y la versión (==) al archivo requirements.txt. Esto ayuda a evitar que se aplique automáticamente una futura actualización de última hora de PyPi.org.

    library == version
    ejemplo Boto3 y psycopg2-binary

    Este caso se proporciona como ejemplo. Las bibliotecas boto y psycopg2-binary vienen incluidas en la instalación base de Apache Airflow v2, por lo que no es necesario especificarlas en un archivo requirements.txt.

    boto3==1.17.54 boto==2.49.0 botocore==1.20.54 psycopg2-binary==2.8.6

    Si se especifica un paquete sin una versión, Amazon MWAA instala la última versión del paquete desde PyPi.org. Esta versión puede entrar en conflicto con otros paquetes de su requirements.txt.

Apache Airflow v1
  1. Hacer una prueba local. Añada bibliotecas adicionales de forma iterativa para encontrar la combinación adecuada de paquetes y sus versiones antes de crear un archivo requirements.txt. Para ejecutar la MWAA CLI utilidad Amazon, consulte aws-mwaa-local-runnerOn GitHub.

  2. Revise los extras del paquete Airflow. Consulta la lista de paquetes disponibles para Apache Airflow v1.10.12 en airflow/constraints-1.10.12/constraints-3.7.txt. https://raw.githubusercontent.com/apache/

  3. Añada el archivo de restricciones. Añada el archivo de restricciones de Apache Airflow v1.10.12 al principio del archivo requirements.txt. Si el archivo de restricciones determina que el paquete xyz==1.0 no es compatible con otros paquetes de su entorno, pip3 install no podrá impedir que se instalen bibliotecas incompatibles en su entorno.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-1.10.12/constraints-3.7.txt"
  4. Paquetes de Apache Airflow v1.10.12. Añada los extras del paquete Airflow y la versión Apache Airflow v1.10.12 (==). Esto ayuda a evitar que se instalen en su entorno paquetes del mismo nombre, pero de una versión diferente.

    apache-airflow[package]==1.10.12
    ejemplo SSHSecure Shell ()

    El siguiente requirements.txt archivo de SSH ejemplo instala Apache Airflow v1.10.12.

    apache-airflow[ssh]==1.10.12
  5. Bibliotecas Python. Añada el nombre del paquete y la versión (==) al archivo requirements.txt. Esto ayuda a evitar que se aplique automáticamente una futura actualización de última hora de PyPi.org.

    library == version
    ejemplo Boto3

    El siguiente archivo requirements.txt de ejemplo instala la biblioteca Boto3 para Apache Airflow v1.10.12.

    boto3 == 1.17.4

    Si se especifica un paquete sin una versión, Amazon MWAA instala la última versión del paquete desde PyPi.org. Esta versión puede entrar en conflicto con otros paquetes de su requirements.txt.

Cómo cargar requirements.txt a Amazon S3

Puede utilizar la consola Amazon S3 o AWS Command Line Interface (AWS CLI) para cargar un requirements.txt archivo en su bucket de Amazon S3.

Usando el AWS CLI

The AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le permite interactuar con AWS los servicios mediante comandos del shell de la línea de comandos. Para completar los pasos de esta página, necesita lo siguiente:

Para cargar mediante el AWS CLI
  1. Use el siguiente comando para obtener una lista de todos los buckets de Amazon S3.

    aws s3 ls
  2. Utilice el comando siguiente para enumerar los archivos y las carpetas del bucket de Amazon S3 para su entorno.

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. El siguiente comando carga un archivo requirements.txt en el bucket de Amazon S3.

    aws s3 cp requirements.txt s3://YOUR_S3_BUCKET_NAME/requirements.txt

Uso de la consola de Amazon S3

La consola de Amazon S3 es una interfaz de usuario basada en la web que le permite crear y administrar los recursos de su bucket de Amazon S3.

Carga del contenido usando la consola de Amazon S3
  1. Abre la página Entornos en la MWAA consola de Amazon.

  2. Seleccione un entorno.

  3. Seleccione el enlace del depósito de S3 en el panel de DAGcódigos de S3 para abrir el depósito de almacenamiento en la consola de Amazon S3.

  4. Seleccione Cargar.

  5. Elija Añadir archivo.

  6. Seleccione la copia local de su requirements.txt, elija Cargar.

Instalación de dependencias de Python en su entorno

En esta sección, se describe cómo instalar las dependencias que ha cargado en su bucket de Amazon S3 especificando la ruta al archivo requirements.txt y especificando la versión del archivo requirements.txt cada vez que se actualiza.

Especificar la ruta a requirements.txt en la MWAA consola de Amazon (la primera vez)

Si es la primera vez que crea y carga un requirements.txt archivo en su bucket de Amazon S3, también debe especificar la ruta al archivo en la MWAA consola de Amazon. Solo necesita realizar este paso una vez.

  1. Abre la página Entornos en la MWAA consola de Amazon.

  2. Seleccione un entorno.

  3. Elija Editar.

  4. En el panel DAGCódigo en Amazon S3, elija Browse S3 junto al campo Archivo de requisitos: opcional.

  5. Seleccione el archivo requirements.txt en su bucket de Amazon S3.

  6. Seleccione Elegir.

  7. Seleccione Siguiente, Actualizar entorno.

Puede empezar a usar los nuevos paquetes inmediatamente después de que su entorno termine de actualizarse.

Especificar la requirements.txt versión en la MWAA consola de Amazon

Debes especificar la versión de tu requirements.txt archivo en la MWAA consola de Amazon cada vez que subas una nueva versión tuya a tu requirements.txt bucket de Amazon S3.

  1. Abre la página Entornos en la MWAA consola de Amazon.

  2. Seleccione un entorno.

  3. Elija Editar.

  4. En el panel DAGCódigo en Amazon S3, selecciona una requirements.txt versión de la lista desplegable.

  5. Seleccione Siguiente, Actualizar entorno.

Puede empezar a usar los nuevos paquetes inmediatamente después de que su entorno termine de actualizarse.

Visualización de los registros de su requirements.txt

Consulte los registros de Apache Airflow correspondientes al programador encargado de programar sus flujos de trabajo y de analizar su carpeta de dags. Los siguientes pasos describen cómo abrir el grupo de registros del Scheduler en la MWAA consola de Amazon y ver los registros de Apache Airflow en la consola CloudWatch Logs.

Pasos para ver los registros de un requirements.txt
  1. Abre la página Entornos en la MWAA consola de Amazon.

  2. Seleccione un entorno.

  3. Elija el Grupo de registro del programador de Airflow en el panel de Monitorización.

  4. Seleccione el registro requirements_install_ip en los flujos de registro.

  5. Debería ver la lista de paquetes que se hayan instalado en el entorno en /usr/local/airflow/.local/bin. Por ejemplo:

    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. Consulte la lista de paquetes y compruebe si se produjo algún error en alguno de ellos durante la instalación. Si algo ha ido mal, es posible que aparezca un error similar al siguiente:

    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))

Siguientes pasos

  • Pruebe sus DAGs complementos personalizados y sus dependencias de Python de forma local con la función aws-mwaa-local-runneron GitHub.