Clientes que utilizan Flujos de trabajo administrados por Amazon para Apache Airflow (Amazon MWAA) a menudo necesitan dependencias de Python alojadas en repositorios de código privados. Muchos clientes optan por modo de comunicación a la red pública por su facilidad de uso y capacidad para realizar solicitudes salientes de Internet, todo ello manteniendo un comunicación seguro. Sin requisa, es posible que no se pueda lograr a los repositorios de códigos privados a través de Internet. Además es una buena actos instalar dependencias de Python solo donde sean necesarias. puedes usar Scripts de inicio de Amazon MWAA para instalar selectivamente las dependencias de Python necesarias para ejecutar código en los trabajadores, evitando al mismo tiempo problemas conveniente a las restricciones del servidor web.
Esta publicación muestra un método para instalar selectivamente dependencias de Python según el tipo de componente de Amazon MWAA (servidor web, programador o trabajador) desde un repositorio de Git al que solo se puede lograr desde su cúmulo privada potencial (VPC).
Descripción universal de la decisión
Esta decisión se centra en el uso de un repositorio Git privado para instalar selectivamente dependencias de Python, aunque puede usar el mismo patrón demostrado en esta publicación con índices de paquetes privados de Python como Código AWSArtefacto. Para obtener más información, consulte Amazon MWAA con AWS CodeArtifact para dependencias de Python.
El Cimentación de Amazon MWAA le permite designar un modo de comunicación al servidor web para controlar si se puede lograr al servidor web desde Internet o solo desde su VPC. Además puede controlar si sus trabajadores, programador y servidores web tienen comunicación a Internet a través de la configuración de VPC de su cliente. En esta publicación, demostramos un entorno como el que se muestra en el subsiguiente diagrama, donde el entorno utiliza modo de comunicación a la red pública para los servidores web, y los trabajadores y programadores de Apache Airflow no tienen una ruta a Internet desde su VPC.

Hay hasta cuatro posibles configuraciones de red para un entorno Amazon MWAA:
- Modo de enrutamiento divulgado y comunicación al servidor web divulgado
- Modo de enrutamiento privado y comunicación al servidor web divulgado (que se muestra en el diagrama previo)
- Modo de enrutamiento divulgado y comunicación al servidor web privado
- Modo de enrutamiento privado y comunicación al servidor web privado
Nos centramos en una configuración de red para esta publicación, pero los conceptos fundamentales son aplicables a cualquier configuración de red.
La decisión que analizamos se plinto en el hecho de que Amazon MWAA ejecuta un tema de inicio (startup.sh) durante el inicio de cada componente individual de Apache Airflow (trabajador, programador y servidor web) ayer de instalar los requisitos (requirements.txt) e inicializando el proceso Apache Airflow. Este script de inicio se utiliza para configurar una variable de entorno, a la que luego se hace remisión en el archivo requisitos.txt para instalar bibliotecas de forma selectiva.
Los siguientes pasos nos permiten alcanzar esto:
- Cree e instale el script de inicio (
startup.sh) en el entorno de Amazon MWAA. Este script establece la variable de entorno para instalar dependencias de forma selectiva. - Crear e instalar dependencias globales de Python (
requirements.txt) en el entorno de Amazon MWAA. Este archivo contiene las dependencias globales requeridas por todos los componentes de Amazon MWAA. - Cree e instale dependencias de Python específicas de componentes en el entorno de Amazon MWAA. Este paso implica la creación de archivos de requisitos separados para cada tipo de componente (trabajador, programador, servidor web) para instalar selectivamente las dependencias necesarias.
Requisitos previos
Para este tutorial, debe tener los siguientes requisitos previos:
- Un cuenta de AWS
- Un entorno de Amazon MWAA implementado con modo de comunicación divulgado para el servidor web
- Control de versiones facultado para su entorno Amazon MWAA Servicio de almacenamiento simple de Amazon (Amazon S3) cubo
- Amazon CloudWatch registro facultado en el nivel INFO para el trabajador y el servidor web
- Un repositorio Git accesible desde su VPC
Encima, cargamos un paquete de Python de muestra en el repositorio de Git:
Cree e instale el script de inicio en el entorno de Amazon MWAA
Cree el archivo startup.sh usando el subsiguiente código de ejemplo:
Cargue startup.sh en el depósito S3 de su entorno Amazon MWAA:
Explore las secuencias de registros de CloudWatch para sus trabajadores y vea el registro de trabajador_consola. Observe que el script de inicio ahora se está ejecutando y configurando la variable de entorno.

Cree e instale dependencias globales de Python en el entorno de Amazon MWAA
Su archivo de requisitos debe incluir una manifiesto de restricción para comprobar de que los paquetes enumerados en sus requisitos sean compatible con la lectura de Apache Airflow estás usando. La manifiesto que comienza con -r hace remisión a la variable de entorno que configuró en su startup.sh script basado en el tipo de componente.
El subsiguiente código es un ejemplo de la requirements.txt archivo:
Cargue el archivo requisitos.txt en el depósito S3 del entorno de Amazon MWAA:
Cree e instale dependencias de Python específicas de componentes en el entorno de Amazon MWAA
Para este ejemplo, queremos instalar el paquete Python scrapy en trabajadores y programadores desde nuestro repositorio privado de Git. Además queremos instalar pprintpp en el servidor web desde los índices de paquetes públicos de Python. Para lograrlo, necesitamos crear los siguientes archivos (proporcionamos código de ejemplo):
Subir webserver_reqs.txt, scheduler_reqs.txty worker_reqs.txt a la carpeta DAG para el entorno de Amazon MWAA:
Actualice el entorno para el nuevo archivo de requisitos y observe los resultados.
Obtenga la última lectura del objeto para el archivo de requisitos:
Actualice el entorno de Amazon MWAA para utilizar el nuevo requirements.txt archivo:
Explore los flujos de registros de CloudWatch para sus trabajadores y vea el requirements_install registro. Observe que el script de inicio ahora se está ejecutando y configurando la variable de entorno.


Conclusión
En esta publicación, demostramos un método para instalar selectivamente dependencias de Python según el tipo de componente de Amazon MWAA (servidor web, programador o trabajador) desde un repositorio de Git al que solo se puede lograr desde su VPC.
Esperamos que esta publicación le haya proporcionado una mejor comprensión de cómo guiones de inicio y Trámite de dependencias de Python trabajar en un entorno Amazon MWAA. Puede implementar otras variaciones y configuraciones utilizando los conceptos descritos en esta publicación, según la configuración y los requisitos específicos de su red.
Sobre el autor
Tim Wilhoit es arquitecto senior de soluciones para el Unidad de Defensa en AWS. Tim tiene más de 20 abriles de experiencia en TI empresarial. Sus áreas de interés son la informática sin servidor y ML/AI. En su tiempo huido, a Tim le gusta acontecer tiempo en el balsa y apoyar a los Oklahoma State Cowboys. ¡Vaya golpes!