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

Cloud Run运行子代理时出现Project ID缺失错误求助

Cloud Run部署ADK子代理时出现Project ID缺失问题

问题描述

我有一个ADK解决方案,采用路由代理架构,路由代理包含三类组件:作为工具的函数、作为工具的代理,以及用于转接用户请求的子代理。所有代理在本地环境运行时均正常工作,但部署到Cloud Run后,路由代理可正常运行,子代理却无法调用,报错提示缺少Project ID。所有代理均通过google.adk.agents Agent类实例化。

错误信息

File "/usr/local/lib/python3.13/site-packages/litellm/llms/vertex_ai/vertex_llm_base.py", line 432, in get_access_token raise ValueError("Could not resolve project_id") ValueError: Could not resolve project_id

排查与尝试

查看vertex_llm_base.py中的get_access_token函数后发现,project_id需要作为凭证令牌的一部分传入。我尝试在用于授权请求的JWT中添加project_id声明,但问题仍未解决。

JWT负载生成代码:

def generate_jwt_payload(service_account_email: str, resource_url: str) -> str:
    iat = datetime.datetime.now(tz=datetime.timezone.utc)
    exp = iat + datetime.timedelta(seconds=3600)

    payload = {
        "iss": service_account_email,
        "sub": service_account_email,
        "aud": resource_url,
        "iat": int(iat.timestamp()),
        "exp": int(exp.timestamp()),
        "project_id": service_account_email.split('@')[1].split('.')[0],  # 从服务账号邮箱提取Project ID
    }
    return json.dumps(payload)

目前怀疑问题可能出在服务间凭证缓存或内部令牌传递环节,但无法确定具体原因,陷入瓶颈。

以下是令牌创建的完整代码细节(基于Python客户端库):

def sign_jwt(target_sa: str, resource_url: str) -> str:
    source_credentials, project_id = google.auth.default()
    # 使用源凭证初始化IAM凭证客户端
    iam_client = iam_credentials_v1.IAMCredentialsClient(credentials=source_credentials)

    # 生成服务账号资源名称
    name = "projects/-/serviceAccounts/" + target_sa

    # 创建并签名JWT负载
    payload = generate_jwt_payload(target_sa, resource_url)

    # 调用IAM凭证API完成JWT签名
    response = iam_client.sign_jwt(name=name, payload=payload)
    
    return response.signed_jwt

服务账号资源名称是按文档格式组装的,生成的格式示例为:projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com,其中的连字符为通配符,而非使用iam_client.service_account_path(project, target_sa)方法生成名称时传入的具体project_id。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:36:05