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.
Administración de las dependencias de Python en requirements.txt
En este tema se describe cómo instalar y gestionar las dependencias de Python en un requirements.txt
archivo para un entorno Amazon Managed Workflows for Apache Airflow.
Contenido
Instalación de dependencias de Python mediante el formato de archivo de requisitos PyPi .org
Visualización de los registros en la consola de Logs CloudWatch
Visualización de los errores en la interfaz de usuario de Apache Airflow
Pruebas DAGs con la utilidad CLI Amazon MWAA
-
La utilidad de la interfaz de la línea de comandos (CLI) replica entornos en Amazon Managed Workflows para Apache Airflow de forma local.
-
La CLI crea localmente una imagen de contenedor de Docker similar a una imagen de producción de Amazon MWAA. Esto le 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 la CLI, consulte aws-mwaa-local-runner
on GitHub.
Instalación de dependencias de Python mediante el formato de archivo de requisitos PyPi .org
La siguiente sección describe las diferentes formas de instalar las dependencias de Python según el formato de archivo de requisitos
Opción uno: dependencias de Python desde el Índice de paquetes de Python
La siguiente sección describe cómo especificar las dependencias de Python desde el Python Package Indexrequirements.txt
.
Opción dos: archivos wheels de Python (.whl)
El formato wheel de Python es un tipo de paquete diseñado para enviar bibliotecas con artefactos compilados. Los paquetes wheel presentan varias ventajas si se utilizan como método para instalar dependencias en Amazon MWAA:
-
Instalación más rápida: los archivos WHL se copian en el contenedor como un único ZIP y se instalan de forma local, sin necesidad de descargarlos uno por uno.
-
Menos conflictos: se puede determinar con antelación la compatibilidad de las versiones de los paquetes. De esta manera, no es necesario que
pip
elabore de forma recurrente versiones compatibles. -
Mayor resiliencia: si las bibliotecas se alojan externamente, es posible que los requisitos posteriores cambien con el tiempo, lo que provocará que las versiones sean incompatibles entre los contenedores de un entorno de Amazon MWAA. Al no depender de una fuente externa para las dependencias, todos los contenedores tienen las mismas bibliotecas, independientemente de cuándo se instancie cada contenedor.
Recomendamos seguir los métodos que se indican a continuación para instalar las dependencias de Python en su requirements.txt
desde un archivo wheel de Python (.whl
).
Métodos
Uso del archivo plugins.zip
en un bucket de Amazon S3
El programador de Apache Airflow, los trabajadores y el servidor web (para Apache Airflow v2.2.2 y versiones posteriores) buscan complementos personalizados durante el inicio en el contenedor AWS Fargate administrado para su entorno en. /usr/local/airflow/plugins/
Este proceso comienza antes del *
pip3 install -r requirements.txt
de Amazon MWAA para las dependencias de Python y del inicio del servicio Apache Airflow. Utilice un plugins.zip
archivo para los archivos que no desee que se modifiquen continuamente durante la ejecución del entorno o para los que no desee conceder acceso a los usuarios que escriben. DAGs Por ejemplo, archivos wheel de la biblioteca Python, archivos PEM de certificados y archivos YAML de configuración.
En la siguiente sección se describe cómo instalar wheels del archivo plugins.zip
de su bucket de Amazon S3.
-
Descargue los archivos WHL necesarios. Puede utilizar
pip download
con su requirements.txt
actual en el local-runnerde Amazon MWAA o en otro contenedor de Amazon Linux 2 para resolver y descargar los archivos wheel de Python necesarios. $
pip3 download -r "$AIRFLOW_HOME/dags/requirements.txt" -d "$AIRFLOW_HOME/plugins"
$
cd "
$AIRFLOW_HOME
/plugins"$
zip "
$AIRFLOW_HOME
/plugins.zip" * -
Especifique la ruta en su
requirements.txt
. Especifique el directorio de complementos al principio de su archivo requirements.txt con--find-links
e indique a pip
que instale desde otras fuentes con--no-index
, tal y como se muestra a continuación. --find-links /usr/local/airflow/plugins --no-index
ejemplo Ejemplo de wheel en el archivo requirements.txt
En el siguiente ejemplo, se supone que ha cargado el wheel en un archivo
plugins.zip
en la raíz de su bucket de Amazon S3. Por ejemplo:--find-links /usr/local/airflow/plugins --no-index numpy
Amazon MWAA extrae el wheel
numpy-1.20.1-cp37-cp37m-manylinux1_x86_64.whl
de la carpeta deplugins
y lo instala en su entorno.
Uso de archivos WHL alojados en una URL
En la siguiente sección se describe cómo instalar un archivo wheel alojado en una URL. La URL debe ser de acceso público o se debe poder acceder a ella desde la VPC de Amazon personalizada que especificó para su entorno de Amazon MWAA.
-
Indique una URL. Indique la URL en la que se encuentra el archivo wheel en su
requirements.txt
.ejemplo archivo wheel en una URL pública
En el siguiente ejemplo, se puede ver cómo se descarga un archivo wheel de un sitio web público.
--find-links https://files.pythonhosted.org/packages/ --no-index
Amazon MWAA obtiene el archivo wheel de la URL que había especificado y lo instala en su entorno.
nota
URLs no se puede acceder a ellos desde servidores web privados (requisitos de instalación en Amazon MWAA v2.2.2 y versiones posteriores).
Creación de archivos WHL a partir de DAG
Si dispone de un servidor web privado con Apache Airflow v2.2.2 o versiones posteriores y no puede instalar los requisitos porque su entorno no tiene acceso a repositorios externos, puede usar el siguiente DAG para tomar sus requisitos actuales de Amazon MWAA y empaquetarlos en Amazon S3:
from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago S3_BUCKET = 'my-s3-bucket' S3_KEY = 'backup/plugins_whl.zip' with DAG(dag_id="create_whl_file", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: cli_command = BashOperator( task_id="bash_command", bash_command=f"mkdir /tmp/whls;pip3 download -r /usr/local/airflow/requirements/requirements.txt -d /tmp/whls;zip -j /tmp/plugins.zip /tmp/whls/*;aws s3 cp /tmp/plugins.zip s3://
{S3_BUCKET}
/{S3_KEY}
" )
Después de ejecutar el DAG, utilice este nuevo archivo como su plugins.zip
de Amazon MWAA. Si lo desea, puede empaquetarlo con otros complementos. A continuación, actualice su requirements.txt
que comienza por --find-links /usr/local/airflow/plugins
y --no-index
sin agregar --constraint
.
Esto le permitirá utilizar las mismas bibliotecas sin conexión.
Opción tres: dependencias de Python alojadas en un repositorio privado compatible con PyPi /PEP-503
En la siguiente sección se describe cómo instalar un elemento adicional de Apache Airflow alojado en una URL privada con autenticación.
-
Añada su nombre de usuario y contraseña como Opciones de configuración de Airflow. Por ejemplo:
-
foo.user
:YOUR_USER_NAME
-
foo.pass
:YOUR_PASSWORD
-
-
Cree su archivo
requirements.txt
. Sustituya los marcadores de posición del ejemplo que sigue por su URL privada e introduzca el nombre de usuario y la contraseña que haya añadido como Opciones de configuración de Airflow. Por ejemplo:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com
-
En caso aplicable, añada las bibliotecas adicionales a su archivo
requirements.txt
. Por ejemplo:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com my-private-package==1.2.3
Habilitación de registros en la consola de Amazon MWAA
La función de ejecución de su entorno Amazon MWAA necesita permiso para enviar registros a CloudWatch Logs. Para actualizar los permisos de un rol de ejecución, consulte Rol de ejecución de Amazon MWAA.
Puede habilitar los registros de Apache Airflow en los niveles INFO
, WARNING
, ERROR
o CRITICAL
. A elegir un nivel de registro, Amazon MWAA envía los registros correspondientes a ese nivel y a todos los niveles de gravedad superiores. Por ejemplo, si habilita los registros en el INFO
nivel, Amazon MWAA envía INFO
los registros y WARNING
ERROR
, y los niveles de CRITICAL
registro a CloudWatch Logs. Recomendamos habilitar los registros de Apache Airflow en el nivel INFO
para que el programador pueda ver los registros recibidos para el archivo requirements.txt
.

Visualización de los registros en la consola de Logs CloudWatch
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 consola de Amazon MWAA y ver los registros de Apache Airflow en la consola Logs. CloudWatch
Pasos para ver los registros de un requirements.txt
-
Abra la página Entornos
en la consola de Amazon MWAA. -
Seleccione un entorno.
-
Elija el Grupo de registro del programador de Airflow en el panel de Monitorización.
-
Seleccione el registro
requirements_install_ip
en los flujos de registro. -
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))
-
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))
Visualización de los errores en la interfaz de usuario de Apache Airflow
Es posible que también quiera comprobar su interfaz de usuario de Apache Airflow para averiguar si algún error puede estar relacionado con otro problema. El error más común que puede producirse con Apache Airflow en Amazon MWAA es:
Broken DAG: No module named
x
Si ve este error en la interfaz de usuario de Apache Airflow, es probable que falte una dependencia obligatoria en su archivo requirements.txt
.
Inicio de sesión en Apache Airflow
Necesita Política de acceso a la interfaz de usuario de Apache Airflow: Amazon MWAAWeb ServerAccess permisos para su AWS cuenta en AWS Identity and Access Management (IAM) para ver la interfaz de usuario de Apache Airflow.
Pasos para acceder a la interfaz de usuario de Apache Airflow
-
Abra la página Entornos
en la consola de Amazon MWAA. -
Seleccione un entorno.
-
Elija Abrir interfaz de usuario de Airflow.
Ejemplos de escenarios de requirements.txt
Puede mezclar y combinar diferentes formatos en su requirements.txt
. En el siguiente ejemplo se utiliza una combinación de las distintas formas de instalar elementos adicionales.
ejemplo Extras en PyPi .org y en una URL pública
Debe usar --index-url
esta opción al especificar paquetes de PyPi .org, además de los paquetes en una URL pública, como un repositorio URLs personalizado compatible con PEP 503.
aws-batch == 0.6 phoenix-letter >= 0.3 --index-url http://dist.repoze.org/zope2/2.10/simple zopelib