如何通过REST API触发Google Cloud Composer中的Airflow DAG?
通过REST API触发Google Cloud Composer中的Airflow DAG
1. 获取Airflow API基础地址
- 登录Google Cloud控制台,进入你的Cloud Composer环境详情页
- 找到「Airflow web UI」的URL(格式类似
https://xxx-dot-us-central1.composer.googleusercontent.com) - API基础路径为该URL拼接
/api/v1,最终地址示例:https://xxx-dot-us-central1.composer.googleusercontent.com/api/v1
2. 获取身份认证令牌
访问Cloud Composer的Airflow API需要GCP身份验证,通过gcloud CLI获取令牌:
- 确保已安装并初始化gcloud CLI(首次使用需执行
gcloud init完成配置) - 在终端运行命令:
gcloud auth print-access-token - 复制输出的令牌字符串,后续请求会用到
3. 发送触发DAG的POST请求
核心参数说明
DAG_ID:你要触发的Airflow DAG的唯一标识(即代码中dag_id定义的值)- 请求端点:
{API_BASE_URL}/dags/{DAG_ID}/dagRuns
示例curl命令
直接在终端执行以下命令(替换占位符为实际值):
curl -X POST \ https://xxx-dot-us-central1.composer.googleusercontent.com/api/v1/dags/your_dag_id/dagRuns \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "conf": { "custom_param": "test_value" } }'
- 其中
conf字段可选,用于传递DAG运行时需要的自定义参数
代码调用示例(Python)
如果需要在代码中触发,可借助Google官方认证库自动获取令牌:
from google.auth import default from google.auth.transport.requests import Request import requests # 获取认证令牌 credentials, _ = default() credentials.refresh(Request()) auth_token = credentials.token # 配置API地址和DAG ID api_endpoint = "https://xxx-dot-us-central1.composer.googleusercontent.com/api/v1/dags/your_dag_id/dagRuns" headers = { "Authorization": f"Bearer {auth_token}", "Content-Type": "application/json" } # 自定义参数(可选) payload = {"conf": {"param1": "value1", "param2": 123}} # 发送请求 response = requests.post(api_endpoint, headers=headers, json=payload) print(f"请求状态码: {response.status_code}") print(f"响应内容: {response.json()}")
4. 验证触发结果
发送GET请求查看DAG运行记录,确认触发成功:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://xxx-dot-us-central1.composer.googleusercontent.com/api/v1/dags/your_dag_id/dagRuns
返回结果中会包含最新触发的DAG运行实例信息
注意事项
- 确保你的GCP账号拥有
roles/composer.environmentViewer或更高权限(如roles/composer.admin),同时具备Airflow中触发DAG的权限 - 如果是在GCP服务(如Cloud Function)中调用,可直接使用服务账号默认认证,无需手动获取令牌
内容的提问来源于stack exchange,提问作者Hrithik Shrivastava
相关产品推荐
相关产品推荐

