You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:15:19