Acceder a la interfaz de línea de comandos de Airflow

Cloud Composer 1 | Cloud Composer 2

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.

Acerca de las versiones de la sintaxis de la CLI

Airflow en Cloud Composer 2 usa la sintaxis de la CLI de Airflow 2.

Comandos compatibles con la CLI de Airflow

Para obtener una lista completa de los comandos de la CLI de Airflow admitidos, consulta la referencia de gcloud composer environments run.

Antes de comenzar

  • Debes tener permisos suficientes para usar la herramienta de línea de comandos de gcloud con Cloud Composer y ejecutar los comandos de la CLI de Airflow. Para obtener más información, consulta control de acceso.

  • En las versiones de Cloud Composer 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

Para ejecutar comandos de la CLI de Airflow en tus entornos, usa gcloud:

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    SUBCOMMAND \
    -- SUBCOMMAND_ARGUMENTS

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno
  • SUBCOMMAND por uno de los comandos de la CLI de Airflow admitidos
  • SUBCOMMAND_ARGUMENTS por argumentos para el comando de la CLI de Airflow

Separador de argumentos de subcomando

Separa los argumentos para el comando de la CLI de Airflow especificado con --:

Airflow 2

Para la sintaxis de la CLI de Airflow 2, sigue estos pasos:

  • Especifica los comandos compuestos de la CLI como un subcomando.
  • Especifica cualquier argumento para comandos compuestos como argumentos de subcomando, después de un separador --.
gcloud composer environments run example-environment \
    dags list -- --output=json

Airflow 1

Cloud Composer 2 solo es compatible con Airflow 2.

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.

Ejemplo

Por ejemplo, para activar un DAG con el nombre sample_quickstart y el ID 5077 en tu entorno de Cloud Composer, ejecuta lo siguiente:

Airflow 2

gcloud composer environments run example-environment \
    --location us-central1 dags trigger -- sample_quickstart \
    --run-id=5077

Airflow 1

Cloud Composer 2 solo es compatible con Airflow 2.

Ejecuta comandos en un entorno de IP privada

A partir de la versión 2.4.0 de Cloud Composer, puedes ejecutar comandos de la CLI de Airflow en un entorno de IP privada sin configuración adicional. Tu máquina no necesita acceso al extremo del plano de control del clúster del entorno para ejecutar estos comandos.

En las versiones de Cloud Composer anteriores a la 2.4.0:

Para ejecutar comandos de la CLI de Airflow en un entorno de IP privada, ejecútalos en 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 los comandos de gcloud composer para ejecutar la CLI de Airflow. Para poder ejecutar los comandos de la CLI de Airflow, sigue estos pasos:

  1. Crea una VM en tu red de VPC
  2. Adquiere credenciales de clúster. Ejecuta el siguiente comando: bash 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 Cloud Composer en la lista de cargas de trabajo o mediante el comando kubectl get namespaces.

Si el acceso de 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 agrega 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.

Ejecuta comandos de la CLI de Airflow por medio de la API de Cloud Composer

A partir de la versión 2.4.0 de Cloud Composer, puedes ejecutar comandos de la CLI de Airflow a través de la API de Cloud 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: El comando de la CLI de Airflow que deseas ejecutar, como dags.
  • AIRFLOW_SUBCOMMAND: Subcomando para el comando de la CLI de Airflow que deseas ejecutar, como list.
  • SUBCOMMAND_PARAMETER (opcional): Son los parámetros del subcomando. Si deseas utilizar 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"
  ]
}

Estado del comando de encuesta

Después de ejecutar un comando de la CLI de Airflow a través de la API de Cloud Composer, verifica si se completó correctamente. Para ello, realiza una solicitud de PollAirflowCommand y, luego, inspecciona los campos en exitInfo para detectar errores y códigos de estado. El campo output contiene líneas de registro.

Para obtener el estado de ejecución de comandos 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
}

Soluciona problemas

No hay conectividad con el plano de control del clúster

Cuando ejecutes los 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 presentados en la sección Ejecuta comandos en un entorno de IP privada o usa las instrucciones disponibles en la sección Se agotó el tiempo de espera del comando kubectl.