Airflow 2.9.0启用带配置的DAG触发选项及传参方法咨询
解决Airflow 2.9.0 UI无“Trigger DAG with config”选项及传参方法
一、启用“Trigger DAG with config”选项的方法
确保DAG支持接收配置参数
只有当DAG代码中显式使用dag_run.conf获取配置时,UI才会显示该触发选项。示例代码如下:from airflow import DAG from airflow.operators.python import PythonOperator from datetime import datetime def process_input(**context): # 从dag_run中获取传入的配置 config = context['dag_run'].conf print(f"Received config: {config}") with DAG( dag_id='config_demo', start_date=datetime(2024, 1, 1), schedule=None, catchup=False ) as dag: process_task = PythonOperator( task_id='process_config', python_callable=process_input, provide_context=True )只要DAG内有任务依赖
dag_run.conf,触发菜单就会自动出现“Trigger DAG with config”选项。检查Airflow Web服务配置
确认airflow.cfg中webserver模块的expose_config参数为True(默认值)。在Docker部署场景中,可通过环境变量修改docker-compose.yml的airflow-webserver服务:airflow-webserver: environment: - AIRFLOW__WEBSERVER__EXPOSE_CONFIG=True修改后重启服务:
docker-compose restart airflow-webserver
二、替代传参方式
如果UI选项仍未显示,可通过以下方式传递配置参数:
Airflow CLI触发
进入Airflow容器执行触发命令:# 进入容器 docker exec -it airflow-webserver bash # 触发DAG并传入JSON格式配置 airflow dags trigger config_demo --conf '{"param1": "value1", "param2": 123}'或直接在宿主机执行:
docker-compose run --rm airflow-webserver airflow dags trigger config_demo --conf '{"param1": "value1", "param2": 123}'REST API触发
调用Airflow官方API传递配置:curl -X POST \ http://localhost:8080/api/v1/dags/config_demo/dagRuns \ -H "Content-Type: application/json" \ -H "Authorization: Basic <base64编码的用户名密码>" \ -d '{ "conf": { "param1": "value1", "param2": 123 } }'注:
<base64编码的用户名密码>需将用户名:密码字符串进行Base64编码后替换。
内容的提问来源于stack exchange,提问作者Thota Tarun sai
相关产品推荐
相关产品推荐

