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.
Uso de un script de inicio con Amazon MWAA
Un script de inicio es un script del intérprete de comandos (.sh
) que uno aloja en el bucket de Amazon S3 de su entorno de forma similar a sus DAG, requisitos y complementos. Amazon MWAA ejecuta este script durante el inicio en cada componente individual de Apache Airflow (proceso de trabajo, programador y servidor web) antes de instalar los requisitos e inicializar el proceso de Apache Airflow. Utilice un script de inicio para hacer lo siguiente:
-
Instalar los tiempos de ejecución: instale los tiempos de ejecución de Linux necesarios para sus flujos de trabajo y conexiones.
-
Configurar las variables de entorno: configure las variables de entorno para cada componente de Apache Airflow. Sobrescriba variables comunes como
PATH
,PYTHONPATH
yLD_LIBRARY_PATH
. -
Administrar las claves y los tokens: transfiera los tokens de acceso a los repositorios personalizados a
requirements.txt
y configure las claves de seguridad.
En los temas siguientes, se describe cómo configurar un script de inicio para instalar tiempos de ejecución de Linux, establecer variables de entorno y solucionar problemas relacionados con los registros de CloudWatch.
Temas
Configuración de un script de inicio
Para usar un script de inicio con su entorno Amazon MWAA existente, cargue un archivo .sh
en el bucket Amazon S3 de su entorno. A continuación, para asociar el script al entorno, especifique lo siguiente en los detalles del entorno:
-
La ruta URL de Amazon S3 al script: la ruta relativa al script alojado en su bucket, por ejemplo,
s3://mwaa-environment/
.startup.sh
-
El ID de versión de Amazon S3 del script: la versión del script del intérprete de comandos de inicio de su bucket de Amazon S3. Debe especificar el ID de versión que Amazon S3 asigna al archivo cada vez que actualice el script. Los ID de versión son cadenas opacas unicode, codificadas en UTF-8, listas para URL que no tienen más de 1024 bytes de longitud, por ejemplo:
3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
.
Para completar los pasos de esta sección, utilice el siguiente script de ejemplo. El script genera el valor asignado a MWAA_AIRFLOW_COMPONENT
. Esta variable de entorno identifica cada componente de Apache Airflow en el que se ejecuta el script.
Copie el código y guárdelo localmente como startup.sh
.
#!/bin/sh echo "Printing Apache Airflow component" echo $MWAA_AIRFLOW_COMPONENT
A continuación, cargue el script en su bucket de Amazon S3.
Ahora, asocie el script a su entorno.
Por último, recupere los eventos de registro para comprobar que el script funciona según lo previsto. Al activar el registro para cada componente de Apache Airflow, Amazon MWAA crea un grupo de registros y un flujo de registros nuevos. Para obtener más información, consulte Tipos de registro de Apache Airflow.
Instalación de los tiempos de ejecución de Linux mediante un script de inicio
Utilice un script de inicio para actualizar el sistema operativo de un componente de Apache Airflow e instale bibliotecas de tiempo de ejecución adicionales para utilizarlas con sus flujos de trabajo. Por ejemplo, se ejecuta el siguiente script yum update
para actualizar el sistema operativo.
Cuando se ejecuta yum update
en un script de inicio, debe excluir Python utilizando --exclude=python*
como se muestra en el ejemplo. Para que su entorno se ejecute, Amazon MWAA instala una versión específica de Python compatible con su entorno. Por lo tanto, no puede actualizar la versión de Python del entorno mediante un script de inicio.
#!/bin/sh echo "Updating operating system" sudo yum update -y --exclude=python*
Para instalar tiempos de ejecución en un componente específico de Apache Airflow, utilice MWAA_AIRFLOW_COMPONENT
e if
e instrucciones condicionales fi
. En este ejemplo, se ejecuta un único comando para instalar la biblioteca libaio
en el programador y el proceso de trabajo, pero no en el servidor web.
importante
-
Si ha configurado un servidor web privado, debe utilizar la siguiente condición o proporcionar todos los archivos de instalación de forma local para evitar que se agoten los tiempos de espera de la instalación.
-
Utilice
sudo
para ejecutar operaciones que requieren privilegios administrativos.
#!/bin/sh if [[ "${MWAA_AIRFLOW_COMPONENT}" != "webserver" ]] then sudo yum -y install libaio fi
Puede utilizar un script de inicio para comprobar la versión de Python.
#!/bin/sh export PYTHON_VERSION_CHECK=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'` echo "Python version is $PYTHON_VERSION_CHECK"
Amazon MWAA no admite la anulación de la versión predeterminada de Python, ya que esto podría provocar incompatibilidades con las bibliotecas de Apache Airflow instaladas.
Configuración de las variables de entorno mediante un script de inicio
Utilice scripts de inicio para establecer variables de entorno y modificar las configuraciones de Apache Airflow. En el siguiente ejemplo, se define una nueva variable ENVIRONMENT_STAGE
. Puede hacer referencia a esta variable en un DAG o en sus módulos personalizados.
#!/bin/sh export ENVIRONMENT_STAGE="development" echo "$ENVIRONMENT_STAGE"
Utilice scripts de inicio para sobrescribir variables comunes de Apache Airflow o del sistema. Por ejemplo, configure LD_LIBRARY_PATH
para indicar a Python que busque binarios en la ruta que especifique. Esto le permite proporcionar binarios personalizados para sus flujos de trabajo mediante complementos
#!/bin/sh export LD_LIBRARY_PATH=/usr/local/airflow/plugins/
your-custom-binary
Variables de entorno reservadas
Amazon MWAA reserva un conjunto de variables de entorno críticas. Si sobrescribe una variable reservada, Amazon MWAA la restaura a su valor predeterminado. A continuación se enumeran las variables reservadas:
-
MWAA__AIRFLOW__COMPONENT
: se utiliza para identificar el componente Apache Airflow con uno de los siguientes valores:scheduler
,worker
owebserver
. -
AIRFLOW__WEBSERVER__SECRET_KEY
: la clave secreta utilizada para firmar de forma segura las cookies de sesión en el servidor web Apache Airflow. -
AIRFLOW__CORE__FERNET_KEY
: la clave utilizada para cifrar y descifrar los datos confidenciales almacenados en la base de datos de metadatos, por ejemplo, las contraseñas de conexión. -
AIRFLOW_HOME
: la ruta al directorio principal de Apache Airflow, donde los archivos de configuración y los archivos DAG se almacenan localmente. -
AIRFLOW__CELERY__BROKER_URL
: la URL del agente de mensajes utilizado para la comunicación entre el programador de Apache Airflow y los nodos de trabajo de Celery. -
AIRFLOW__CELERY__RESULT_BACKEND
: la URL de la base de datos utilizada para almacenar los resultados de las tareas de Celery. -
AIRFLOW__CORE__EXECUTOR
: la clase de ejecutor que debe usar Apache Airflow. En Amazon MWAA, se trata deCeleryExecutor
-
AIRFLOW__CORE__LOAD_EXAMPLES
: se utiliza para activar o desactivar la carga de ejemplos de DAG. -
AIRFLOW__METRICS__METRICS_BLOCK_LIST
: se utiliza para gestionar qué métricas de Apache Airflow emite y captura Amazon MWAA en CloudWatch. -
SQL_ALCHEMY_CONN
: la cadena de conexión de la base de datos de RDS para PostgreSQL utilizada para almacenar los metadatos de Apache Airflow en Amazon MWAA. -
AIRFLOW__CORE__SQL_ALCHEMY_CONN
: se utiliza con el mismo propósito queSQL_ALCHEMY_CONN
, pero siguiendo la nueva convención de nomenclatura de Apache Airflow. -
AIRFLOW__CELERY__DEFAULT_QUEUE
: la cola predeterminada para las tareas de Celery en Apache Airflow. -
AIRFLOW__OPERATORS__DEFAULT_QUEUE
: la cola predeterminada para las tareas que utilizan operadores específicos de Apache Airflow. -
AIRFLOW_VERSION
: la versión de Apache Airflow instalada en el entorno Amazon MWAA. -
AIRFLOW_CONN_AWS_DEFAULT
: las credenciales de AWS predeterminadas que se utilizan para la integración con otros servicios de AWS. -
AWS_DEFAULT_REGION
: establece la región de AWS predeterminada que se utiliza con las credenciales predeterminadas para la integración con otros servicios de AWS. -
AWS_REGION
: si se define, esta variable de entorno invalida los valores de la variableAWS_DEFAULT_REGION
de entorno y la región de configuración del perfil. -
PYTHONUNBUFFERED
: se utiliza para enviar flujosstdout
ystderr
a registros de contenedor. -
AIRFLOW__METRICS__STATSD_ALLOW_LIST
: se utiliza para configurar una lista de permitidos de prefijos separados por comas para enviar las métricas que comienzan con los elementos de la lista. -
AIRFLOW__METRICS__STATSD_ON
: activa el envío de métricas aStatsD
. -
AIRFLOW__METRICS__STATSD_HOST
: se utiliza para conectarse al daemonStatSD
. -
AIRFLOW__METRICS__STATSD_PORT
: se utiliza para conectarse al daemonStatSD
. -
AIRFLOW__METRICS__STATSD_PREFIX
: se utiliza para conectarse al daemonStatSD
. -
AIRFLOW__CELERY__WORKER_AUTOSCALE
: establece la simultaneidad máxima y mínima. -
AIRFLOW__CORE__DAG_CONCURRENCY
: establece el número de instancias de tareas que el programador puede ejecutar simultáneamente en un DAG. -
AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG
: establece el número máximo de tareas activas por DAG. -
AIRFLOW__CORE__PARALLELISM
: define el número máximo de instancias de tareas que se pueden ejecutar simultáneamente. -
AIRFLOW__SCHEDULER__PARSING_PROCESSES
: establece el número máximo de procesos analizados por el programador para programar los DAG. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT
: define, en número de segundos, el tiempo de espera para que un proceso de trabajo confirme la tarea antes de que el mensaje se entregue a otro proceso de trabajo. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__REGION
: establece la región de AWS para el transporte de Celery subyacente. -
AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__PREDEFINED_QUEUES
: establece la cola para el transporte de Celery subyacente. -
AIRFLOW_SCHEDULER_ALLOWED_RUN_ID_PATTERN
: se utiliza para verificar la validez de la entrada delrun_id
parámetro al activar un DAG. -
AIRFLOW__WEBSERVER__BASE_URL
: la URL del servidor web utilizado para alojar la interfaz de usuario de Apache Airflow.
Variables de entorno sin reserva
Puede utilizar un script de inicio para sobrescribir las variables de entorno no reservadas. En la siguiente lista, se ofrecen algunas de las variables comunes:
-
PATH
: especifica una lista de directorios en los que el sistema operativo busca archivos ejecutables y scripts. Cuando se ejecuta un comando en la línea de comandos, el sistema comprueba los directorios enPATH
para buscar y ejecutar el comando. Al crear tareas u operadores personalizados en Apache Airflow, es posible que necesite recurrir a scripts o ejecutables externos. Si los directorios que contienen estos archivos no se encuentran en los valores especificados en la variablePATH
, las tareas no se ejecutarán si el sistema no puede localizarlos. Al añadir los directorios adecuados aPATH
, las tareas de Apache Airflow pueden buscar y ejecutar los ejecutables necesarios. -
PYTHONPATH
: utilizada por el intérprete de Python para determinar en qué directorios buscar los módulos y paquetes importados. Es una lista de directorios que puede añadir a la ruta de búsqueda predeterminada. Esto permite al intérprete buscar y cargar bibliotecas de Python no incluidas en la biblioteca estándar o instaladas en los directorios del sistema. Use esta variable para agregar sus módulos y paquetes de Python personalizados y úselos con sus DAG. -
LD_LIBRARY_PATH
: variable de entorno utilizada por el enlazador y el cargador dinámicos de Linux para buscar y cargar bibliotecas compartidas. Especifica una lista de directorios que contienen bibliotecas compartidas, en las que se busca antes que en los directorios predeterminados de las bibliotecas del sistema. Utilice esta variable para especificar los binarios personalizados. -
CLASSPATH
: utilizada por el entorno de ejecución de Java (JRE) y el kit de desarrollo de Java Development Kit (JDK) para localizar y cargar clases, bibliotecas y recursos de Java en tiempo de ejecución. Es una lista de directorios, archivos JAR y archivos ZIP que contienen código Java compilado.