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

Composer调用Cloud Run gRPC报Credentials无signer_email属性错误

问题根因
  • Composer工作节点默认从GCE元数据服务获取临时访问凭证,这类凭证属于计算实例托管凭证,本身不携带signer_email属性,也不支持本地直接完成JWT签名操作,所有签名动作需要调用Google Cloud IAM接口远程完成,和Airflow gRPC Hook中JWT_GOOGLE认证模式的预期凭证类型不匹配。
  • 旧版本Airflow gRPC Hook的JWT_GOOGLE逻辑直接调用from_signing_credentials方法构造JWT凭证,该方法默认要求传入的凭证是本地可签名类型(比如通过服务账号JSON密钥文件生成的凭证),这类凭证才会自带signer_email字段。直接传入元数据服务下发的托管凭证时,代码尝试读取不存在的signer_email属性就会抛出你看到的AttributeError。
  • 你提前为服务账号绑定roles/iam.serviceAccountTokenCreator角色的配置是正确的,但旧版Hook逻辑没有适配托管凭证的远程签名流程,所以权限配置没有被正确调用。
修复方案

你可以根据自己的环境情况选以下任意一种方案修复:

  • 方案1:自定义认证逻辑适配托管凭证(推荐)
    不使用Hook默认的JWT_GOOGLE分支逻辑,自定义gRPC连接构造代码,显式指定签发人参数、走IAM远程签名流程生成JWT:
    from google.auth import default
    from google.auth.transport import grpc as google_auth_grpc
    from google.auth import jwt as google_auth_jwt
    import grpc
    
    # 从环境获取默认托管凭证,不需要配置密钥文件
    credentials, _ = default()
    # 替换为你的Cloud Run gRPC服务的访问地址,受众格式固定为https://<服务域名>
    target_audience = "https://your-cloudrun-grpc-domain.a.run.app"
    target_addr = "your-cloudrun-grpc-domain.a.run.app:443"
    
    # 构造JWT凭证时显式传入issuer参数,补全原逻辑缺失的字段
    jwt_creds = google_auth_jwt.OnDemandCredentials.from_signing_credentials(
        credentials,
        audience=target_audience,
        issuer=credentials.service_account_email
    )
    
    # 组装带SSL和JWT认证的gRPC通道
    channel_creds = grpc.composite_channel_credentials(
        grpc.ssl_channel_credentials(),
        google_auth_grpc.secure_authorized_channel(jwt_creds, None)
    )
    channel = grpc.secure_channel(target_addr, channel_creds)
    
  • 方案2:升级Airflow gRPC Provider版本
    新版本的gRPC provider已经修复了该适配问题:代码会自动识别托管凭证类型,自动读取凭证上的service_account_email字段作为signer_email使用,同时适配远程签名逻辑。如果你的Composer环境支持升级provider包,升级到修复后的版本即可直接使用原有JWT_GOOGLE配置,不需要修改业务代码。
  • 方案3:(不推荐)使用服务账号JSON密钥
    将对应服务账号的JSON密钥文件上传到Composer关联的Cloud Storage桶,配置GOOGLE_APPLICATION_CREDENTIALS环境变量指向密钥文件路径。这种方式加载的是本地服务账号凭证,自带signer_email属性,可以直接适配旧版Hook的逻辑,但密钥存在误泄露风险,不符合云环境最小权限安全最佳实践。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:03:17