Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow tiene una interfaz de la API de REST que puedes usar para realizar tareas como obtener información sobre ejecuciones y tareas de DAG, actualizar DAG, obtener la configuración de Airflow, agregar y borrar conexiones, y enumerar usuarios.
Para ver un ejemplo del uso de la API de REST de Airflow con funciones de Cloud Run, consulta Activa los DAG con funciones de Cloud Run.
Versiones de la API de REST de Airflow
- Airflow 2 usa la API de REST estable.
- Airflow dejó de estar disponible en la API de REST experimental.
Configura la API de REST estable de Airflow
La API de REST estable está habilitada de forma predeterminada en Airflow 2. Cloud Composer usa su propio backend de autenticación de API.
La autorización funciona de la manera estándar que proporciona Airflow. Cuando un usuario nuevo se autoriza a través de la API, la cuenta del usuario obtiene la función Op
de forma predeterminada.
Puedes habilitar o inhabilitar la API de REST estable o cambiar la función de usuario predeterminada si anulas las siguientes opciones de configuración de Airflow:
Sección | Clave | Valor | Notas |
---|---|---|---|
api
|
(Airflow 2.2.5 y versiones anteriores) auth_backend (Airflow 2.3.0 y versiones posteriores) auth_backends
|
airflow.composer.api.backend.composer_auth
|
Para inhabilitar la API de REST estable, cambia a airflow.api.auth.backend.deny_all . |
api
|
composer_auth_user_registration_role
|
Op
|
Puedes especificar cualquier otra función. |
Permite llamadas a la API de REST de Airflow con el control de acceso del servidor web
Según el método que se use para llamar a la API de REST de Airflow, el método del llamador puede usar una dirección IPv4 o IPv6. Recuerda desbloquear el tráfico de IP a la API de REST de Airflow con el control de acceso del servidor web.
Usa la opción de configuración predeterminada, que es All IP addresses have access (default)
, si no estás seguro de desde qué direcciones IP se enviarán tus llamadas a la API de REST de Airflow.
Realiza llamadas a la API de REST de Airflow
En esta sección, se proporciona una secuencia de comandos de Python de ejemplo que puedes usar para activar los DAG con la API de REST de Airflow estable.
Coloca el contenido del siguiente ejemplo en un archivo llamado composer2_airflow_rest_api.py
y, luego, establece las siguientes variables:
dag_id
: Es el nombre de un DAG, como se define en el archivo fuente del DAG.dag_config
: Es la configuración de la ejecución del DAG.web_server_url
: Es la URL de tu servidor web de Airflow. El formato eshttps://<web-server-id>.composer.googleusercontent.com
.
Accede a la API de REST de Airflow con una cuenta de servicio
La base de datos de Airflow limita la longitud del campo de correo electrónico a 64 caracteres. A veces, las cuentas de servicio tienen direcciones de correo electrónico que superan los 64 caracteres. No es posible crear usuarios de Airflow para esas cuentas de servicio de la manera habitual. Si no hay un usuario de Airflow para esa cuenta de servicio, el acceso a la API de REST de Airflow genera los errores HTTP 401 y 403.
Como solución alternativa, puedes registrar previamente un usuario de Airflow para una cuenta de servicio. Para ello, usa accounts.google.com:NUMERIC_USER_ID
como nombre de usuario y cualquier cadena única como correo electrónico.
Para obtener
NUMERIC_USER_ID
para una cuenta de servicio, ejecuta lo siguiente:gcloud iam service-accounts describe \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --format="value(oauth2ClientId)"
Reemplaza lo siguiente:
SA_NAME
por el nombre de la cuenta de servicio.PROJECT_ID
por el ID del proyecto.
Crea un usuario de Airflow con el rol
Op
para la cuenta de servicio:IU de Airflow
Ve a Seguridad > Listar usuarios y haz clic en Agregar un registro nuevo. Tu usuario de Airflow debe tener el rol
Admin
para abrir esta página.Especifica
accounts.google.com:NUMERIC_USER_ID
como el nombre del usuario. ReemplazaNUMERIC_USER_ID
por el ID de usuario que obtuviste en el paso anterior.Especifica un identificador único como el correo electrónico. Puedes usar cualquier cadena única.
Especifica el rol del usuario. Por ejemplo,
Op
.Asegúrate de que esté seleccionada la casilla de verificación Is Active?.
Especifica el nombre y el apellido del usuario. Puedes usar cualquier cadena.
Haz clic en Guardar.
gcloud
Ejecuta el siguiente comando de la CLI de Airflow:
gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users create -- \ -u accounts.google.com:NUMERIC_USER_ID \ -e UNIQUE_ID \ -f UNIQUE_ID \ -l - -r Op --use-random-password
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.LOCATION
por la región en la que se encuentra el entorno.NUMERIC_USER_ID
por el ID de usuario que obtuviste en el paso anterior.UNIQUE_ID
con el identificador del usuario de Airflow. Puedes usar cualquier cadena única.
Después de crear un usuario de Airflow para una cuenta de servicio, un llamador que se autentique como la cuenta de servicio se reconoce como un usuario registrado previamente y accede a Airflow.
Ajusta el componente de la API de REST de Airflow
Los extremos de la API de REST de Airflow y de la IU de Airflow se ejecutan dentro del servidor web de Airflow. Si usas la API de REST de forma intensiva, considera aumentar la cantidad de CPU y memoria disponibles para el servidor web de Airflow, según la carga esperada.