Ejecuta un DAG de Apache Airflow en Cloud Composer 3 (Google Cloud CLI)
Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta guía de inicio rápido, se muestra cómo crear un entorno de Cloud Composer y ejecutar un DAG de Apache Airflow en Cloud Composer 3.
Si no conoces Airflow, consulta el instructivo sobre conceptos de Airflow en la documentación de Apache Airflow para obtener más información sobre los conceptos, los objetos y el uso de Airflow.
Si quieres usar Google Cloud consola en su lugar, consulta Ejecuta un DAG de Apache Airflow en Cloud Composer.
Si quieres crear un entorno con Terraform, consulta Crea entornos (Terraform).
Antes de comenzar
- Accede a tu Google Cloud cuenta de. Si no conoces Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene elresourcemanager.projects.createpermiso. Obtén información para otorgar roles.
-
Crea un proyecto de: Google Cloud
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el Google Cloud proyecto de que estás creando. -
Selecciona el Google Cloud proyecto de que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu Google Cloud proyecto de.
-
Verifica que la facturación esté habilitada para tu Google Cloud proyecto.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene elresourcemanager.projects.createpermiso. Obtén información para otorgar roles.
-
Crea un proyecto de: Google Cloud
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el Google Cloud proyecto de que estás creando. -
Selecciona el Google Cloud proyecto de que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu Google Cloud proyecto de.
-
Verifica que la facturación esté habilitada para tu Google Cloud proyecto.
-
Habilita la API de Cloud Composer:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene elserviceusage.services.enablepermiso. Obtén información para otorgar roles.gcloud services enable composer.googleapis.com
-
Si quieres obtener los permisos que necesitas para completar esta guía de inicio rápido, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Para asignar roles y permisos de IAM:
Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin) -
Para crear una cuenta de servicio para el entorno de Cloud Composer:
Crear cuentas de servicio (
roles/iam.serviceAccountCreator) -
Para ver, crear y administrar el entorno de Cloud Composer:
-
Administrador de objetos de almacenamiento y entorno (
roles/composer.environmentAndStorageObjectAdmin) -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser)
-
Administrador de objetos de almacenamiento y entorno (
-
Para ver los registros:
Visualizador de registros (
roles/logging.viewer)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
-
Para asignar roles y permisos de IAM:
Administrador de IAM de proyecto (
Crea una cuenta de servicio del entorno
Cuando creas un entorno, especificas una cuenta de servicio. Esta cuenta de servicio se denomina cuenta de servicio del entorno. Tu entorno usa esta cuenta de servicio para realizar la mayoría de las operaciones.
La cuenta de servicio de tu entorno no es una cuenta de usuario. Una cuenta de servicio es un tipo especial de cuenta que usa una aplicación o una instancia de máquina virtual (VM), no una persona.
Para crear una cuenta de servicio para tu entorno, sigue estos pasos:
Crea una cuenta de servicio nueva, como se describe en la documentación de Identity and Access Management.
Otórgale un rol, como se describe en la documentación de Identity and Access Management. El rol requerido es Trabajador de Composer (
composer.worker).
Crear un entorno
Crea un entorno nuevo llamado example-environment en la us-central1
región, con la versión más reciente de Cloud Composer 3 versión.
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.5-build.31 \
--service-account ENVIRONMENT_SERVICE_ACCOUNT
Reemplaza ENVIRONMENT_SERVICE_ACCOUNT por la cuenta de servicio de tu
entorno que creaste antes.
Crea un archivo DAG
Un DAG de Airflow es una colección de tareas organizadas que deseas programar y ejecutar. Los DAG se definen en archivos estándares de Python.
En esta guía, se usa un DAG de Airflow de ejemplo definido en el archivo quickstart.py.
El código de Python en este archivo hace lo siguiente:
- Crea un DAG
composer_sample_dag. Este DAG se ejecuta todos los días. - Ejecuta una tarea
print_dag_run_conf. La tarea imprime la configuración de ejecución del DAG con el operador bash.
Guarda una copia del archivo quickstart.py en tu máquina local:
Sube el archivo DAG al bucket de tu entorno
Cada entorno de Cloud Composer tiene un bucket de Cloud Storage asociado. Airflow en Cloud Composer programa solo los DAG que se encuentran en la carpeta /dags de este bucket.
Para programar tu DAG, sube quickstart.py desde tu máquina local a la carpeta /dags del entorno:
Para subir quickstart.py con Google Cloud CLI, ejecuta el siguiente comando en la carpeta donde se encuentra el archivo quickstart.py:
gcloud composer environments storage dags import \
--environment example-environment --location us-central1 \
--source quickstart.py
Visualiza el DAG
Después de subir el archivo DAG, Airflow hace lo siguiente:
- Analiza el archivo DAG que subiste. Es posible que el DAG tarde unos minutos en estar disponible para Airflow.
- Agrega el DAG a la lista de DAG disponibles.
- Ejecuta el DAG según la programación que proporcionaste en el archivo DAG.
Para verificar que tu DAG se procese sin errores y esté disponible en Airflow, visualízalo en la IU de DAG. La IU de DAG es la interfaz de Cloud Composer para ver la información del DAG en la Google Cloud consola de. Cloud Composer también proporciona acceso a la IU de Airflow, que es una interfaz web nativa de Airflow.
Espera unos cinco minutos para que Airflow tenga tiempo de procesar el archivo DAG que subiste antes y completar la primera ejecución del DAG (que se explica más adelante).
Ejecuta el siguiente comando en Google Cloud CLI. Este comando ejecuta el
dags listcomando de la CLI de Airflow que enumera los DAG en tu entorno.gcloud composer environments run example-environment \ --location us-central1 \ dags listVerifica que el DAG
composer_quickstartaparezca en el resultado del comando.Resultado de ejemplo:
Executing the command: [ airflow dags list ]... Command has been started. execution_id=d49074c7-bbeb-4ee7-9b26-23124a5bafcb Use ctrl-c to interrupt the command dag_id | filepath | owner | paused ====================+=======================+==================+======= airflow_monitoring | airflow_monitoring.py | airflow | False composer_quickstart | dag-quickstart-af2.py | Composer Example | False
Visualiza los detalles de la ejecución del DAG
Una sola ejecución de un DAG se denomina ejecución del DAG. Airflow ejecuta de inmediato una ejecución del DAG para el DAG de ejemplo porque la fecha de inicio en el archivo DAG está establecida en ayer. De esta manera, Airflow se pone al día con la programación del DAG especificado.
El DAG de ejemplo contiene una tarea, print_dag_run_conf, que ejecuta el comando echo en la consola. Este comando genera metainformación sobre el DAG (identificador numérico de la ejecución del DAG).
Ejecuta el siguiente comando en Google Cloud CLI. Este comando enumera las ejecuciones del DAG para el DAG composer_quickstart:
gcloud composer environments run example-environment \
--location us-central1 \
dags list-runs -- --dag-id composer_quickstart
Resultado de ejemplo:
dag_id | run_id | state | execution_date | start_date | end_date
====================+=============================================+=========+==================================+==================================+=================================
composer_quickstart | scheduled__2024-02-17T15:38:38.969307+00:00 | success | 2024-02-17T15:38:38.969307+00:00 | 2024-02-18T15:38:39.526707+00:00 | 2024-02-18T15:38:42.020661+00:00
La CLI de Airflow no proporciona un comando para ver los registros de tareas. Puedes usar otros métodos para ver los registros de tareas de Airflow: la IU de DAG de Cloud Composer, la IU de Airflow o Cloud Logging. En esta guía, se muestra una forma de consultar Cloud Logging para obtener registros de una ejecución de DAG específica.
Ejecuta el siguiente comando en Google Cloud CLI. Este comando lee los registros de Cloud Logging para una ejecución de DAG específica del DAG composer_quickstart. El argumento --format da formato al resultado para que solo se muestre el texto del mensaje de registro.
gcloud logging read \
--format="value(textPayload)" \
--order=asc \
"resource.type=cloud_composer_environment \
resource.labels.location=us-central1 \
resource.labels.environment_name=example-environment \
labels.workflow=composer_quickstart \
(labels.\"execution-date\"=\"RUN_ID\")"
Reemplaza lo siguiente:
RUN_IDpor el valorrun_iddel resultado del comandotasks states-for-dag-runque ejecutaste antes. Por ejemplo,2024-02-17T15:38:38.969307+00:00.
Resultado de ejemplo:
...
Starting attempt 1 of 2
Executing <Task(BashOperator): print_dag_run_conf> on 2024-02-17
15:38:38.969307+00:00
Started process 22544 to run task
...
Running command: ['/usr/bin/bash', '-c', 'echo 115746']
Output:
115746
...
Command exited with return code 0
Marking task as SUCCESS. dag_id=composer_quickstart,
task_id=print_dag_run_conf, execution_date=20240217T153838,
start_date=20240218T153841, end_date=20240218T153841
Task exited with return code 0
0 downstream tasks scheduled from follow-on schedule check
Limpia
Para evitar que se apliquen cargos a tu Google Cloud cuenta de por los recursos que usaste en esta página, borra el Google Cloud proyecto de que tiene los recursos.
Borra los recursos que se usaron en este instructivo:
Borra el entorno de Cloud Composer:
En la Google Cloud consola de, ve a la página Entornos.
Selecciona
example-environmenty haz clic en Borrar.Espera hasta que se borre el entorno.
Borra el bucket de tu entorno. Aunque borres el entorno de Cloud Composer, no se borra el bucket.
En la Google Cloud consola de, ve a la página Storage > Navegador.
Selecciona el bucket del entorno y haz clic en Borrar. Por ejemplo, este bucket puede llamarse
us-central1-example-environ-c1616fe8-bucket.
¿Qué sigue?