Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)
Apache Airflow tiene una interfaz de línea de comandos (CLI) que puedes usar para realizar tareas como activar y administrar DAG, obtener información sobre las ejecuciones y tareas de DAG, agregar y borrar conexiones y usuarios.
Comandos compatibles con la CLI de Airflow
Airflow usa la sintaxis de la CLI de Airflow, que se describe en la documentación de Airflow.
Consulta la referencia del comando gcloud composer environments run para obtener la lista completa de los comandos de la CLI de Airflow admitidos.
Antes de comenzar
Para ejecutar comandos de la CLI de Airflow a través de Google Cloud CLI, haz lo siguiente:
Tu Cuenta de Google debe tener permisos para usar Google Cloud CLI con Managed Airflow y ejecutar comandos de la CLI de Airflow.
Los comandos de la CLI de Airflow que se ejecutan a través de Google Cloud CLI consumen la
environments.executeAirflowCommandcuota.En las versiones de Managed Airflow anteriores a la 2.4.0, necesitas acceso al plano de control del clúster de tu entorno para ejecutar comandos de la CLI de Airflow.
Ejecuta comandos de la CLI de Airflow con gcloud CLI
Para ejecutar comandos de la CLI de Airflow en tus entornos, usa gcloud CLI:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre de tu entorno.LOCATION: Es la región en la que se encuentra el entorno.SUBCOMMAND: uno de los comandos de la CLI de Airflow admitidos.SUBCOMMAND_ARGUMENTSpor argumentos para el comando de la CLI de Airflow
Separador de argumentos del subcomando
Separa los argumentos para el comando de la CLI de Airflow especificado con --:
- Especifica los comandos compuestos de la CLI como subcomando.
- Especifica los argumentos para los comandos compuestos como argumentos de subcomandos, después de un separador
--.
Ejemplo:
gcloud composer environments run example-environment \
dags list -- --output=json
Ubicación predeterminada
La mayoría de los comandos gcloud composer requiere una ubicación. Puedes especificar la
ubicación con la marca --location o si
configuras la ubicación predeterminada.
Por ejemplo, para activar un DAG con el nombre sample_quickstart y el ID 5077 en tu entorno de Managed Airflow, ejecuta lo siguiente:
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
Ejecuta comandos en un entorno de IP privada
En las versiones de Managed Airflow anteriores a la 2.4.0, haz lo siguiente:
Para ejecutar los comandos de la CLI de Airflow en un entorno de IP privada, debes usar una máquina que pueda acceder al extremo del plano de control del clúster de GKE. Las opciones pueden variar según la configuración del clúster privado.
Si el acceso al extremo público está inhabilitado en el clúster de tu entorno, no es posible usar comandos gcloud composer para ejecutar la CLI de Airflow.
Para poder ejecutar comandos de la CLI de Airflow, sigue estos pasos:
- Crea una VM en tu red de VPC.
Adquiere credenciales de clúster. Ejecuta el siguiente comando:
gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
Usa kubectl para ejecutar tu comando de Airflow. Por ejemplo:
kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
--container airflow-scheduler -- airflow dags list
Reemplaza COMPOSER_NAMESPACE por un espacio de nombres similar a: composer-2-0-28-airflow-2-3-394zxc12411. Puedes encontrar tu Managed Airflow en la lista de cargas de trabajo o con el comando kubectl get namespaces.
Si el acceso al extremo público está habilitado en el clúster de tu entorno, también puedes ejecutar comandos de la CLI de Airflow desde una máquina con una dirección IP externa que se agregue a las redes autorizadas. Para habilitar el acceso desde tu máquina, agrega la dirección externa de tu máquina a la lista de redes autorizadas de tu entorno .
Cuando ejecutas comandos gcloud composer environments run o kubectl, es posible que experimentes el siguiente error:
Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"
Síntoma: Este mensaje de error indica que no hay conectividad de red desde una computadora en la que ejecutas estos comandos.
Solución: Sigue los lineamientos que se presentan en la sección
Ejecuta comandos en un entorno de IP privada
o usa las instrucciones disponibles en la sección
kubectl agota el tiempo de espera.
Ejecuta comandos de la CLI de Airflow a través de la API de Composer
A partir de la versión 2.4.0 de Managed Airflow, puedes ejecutar comandos de la CLI de Airflow a través de la API de Composer.
Ejecutar un comando
Crea una solicitud a la API de environments.executeAirflowCommand:
{
"environment": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"command": "AIRFLOW_COMMAND",
"subcommand": "AIRFLOW_SUBCOMMAND",
"parameters": [
"SUBCOMMAND_PARAMETER"
]
}
Reemplaza lo siguiente:
PROJECT_ID: el ID del proyecto.LOCATION: Es la región en la que se encuentra el entorno.ENVIRONMENT_NAME: Es el nombre de tu entorno.AIRFLOW_COMMAND: Es el comando de la CLI de Airflow que deseas ejecutar, comodags.AIRFLOW_SUBCOMMAND: Es el subcomando para el comando de la CLI de Airflow que deseas ejecutar, comolist.- (opcional)
SUBCOMMAND_PARAMETER: Son los parámetros del subcomando. Si deseas usar más de un parámetro, agrega más elementos a la lista.
Ejemplo:
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:executeAirflowCommand
{
"environment": "projects/example-project/locations/us-central1/environments/example-environment",
"command": "dags",
"subcommand": "list",
"parameters": [
"-o json",
"--verbose"
]
}
Consultar el estado del comando
Después de ejecutar un comando de la CLI de Airflow a través de la API de Cloud Composer, verifica si
el comando se completó correctamente. Para ello, realiza una solicitud
PollAirflowCommand y examina los
campos en exitInfo para ver si hay errores y códigos de estado. El campo output contiene líneas de registro.
Para obtener el estado de ejecución del comando y recuperar los registros, proporciona los valores executionId,
pod y podNamespace que muestra ExecuteAirflowCommandRequest:
Ejemplo:
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
"executionId": "39b82312-3a19-4d21-abac-7f8f19855ce7",
"pod": "airflow-scheduler-1327d8cd68-hblpd",
"podNamespace": "composer-2-4-0-airflow-2-5-3-184dadaf",
"nextLineNumber": 1
}