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

Google Cloud Composer-2 REST API服务账号认证方法咨询

使用服务账号认证Composer-2 REST API的正确方法

问题根源

你之前用id_token.fetch_id_token生成令牌无效,是因为Composer-2的REST API需要OAuth 2.0访问令牌,而非ID令牌。ID令牌用于身份验证到特定服务,而GCP的资源管理类API(包括Composer API)只接受带有云平台权限范围的访问令牌。


实现步骤

1. 配置服务账号

  • 在GCP控制台创建或选择一个服务账号,为其分配对应权限:
    • 基础管理:roles/composer.admin(全权限)或roles/composer.editor(编辑权限)
    • 仅触发DAG:roles/composer.environmentOperator
  • 下载该服务账号的JSON密钥文件,保存为service-account-key.json

2. 安装依赖

执行以下命令安装必要的Python库:

pip install google-auth requests

3. 代码示例

以下是使用服务账号获取访问令牌并调用Composer-2 API的完整代码:

import google.auth
from google.auth.transport.requests import Request
import requests

# 加载服务账号密钥,指定云平台权限范围
credentials, project_id = google.auth.load_credentials_from_file(
    'service-account-key.json',
    scopes=['https://www.googleapis.com/auth/cloud-platform']
)

# 刷新过期的凭证
if not credentials.valid:
    credentials.refresh(Request())

# 获取有效访问令牌
access_token = credentials.token

# 示例:调用Composer API获取指定区域的环境列表
api_endpoint = f'https://composer.googleapis.com/v1/projects/{project_id}/locations/us-central1/environments'
headers = {'Authorization': f'Bearer {access_token}'}

response = requests.get(api_endpoint, headers=headers)
response.raise_for_status()  # 捕获请求错误

print(response.json())

额外注意事项

  • GCP内部环境优化:如果代码运行在GCP服务(如Cloud Function、GKE、VM实例)中,无需手动加载密钥文件,直接使用默认应用凭证即可,替换加载密钥的代码为:
    credentials, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/cloud-platform'])
    
  • 权限最小化:遵循权限最小化原则,只给服务账号分配完成任务所需的最低权限,避免过度授权。
  • 令牌有效期:访问令牌默认有效期为1小时,代码中通过credentials.refresh()自动刷新,无需手动处理过期问题。

内容的提问来源于stack exchange,提问作者Abhishek Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:15:27