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

Google Secret Manager API添加密钥版本报错:'ProtoType'无DESCRIPTOR属性

问题解决思路

1. 修正add_secret_version的参数格式

你代码里把parent包装成了字典{"name": "..."},但Secret Manager客户端要求parent直接传入字符串格式的资源路径,不需要额外包装。这是触发ProtoType错误的直接原因。

修正后的代码片段:

### update the secret
# 直接传入字符串格式的parent路径,无需字典包装
parent = f"projects/{project_id}/secrets/{SC_secret_name}"

updatepayload = creds.to_json().encode("UTF-8")

crc32c = google_crc32c.Checksum()
crc32c.update(updatepayload)

response = SMclient.add_secret_version(
    request={
        "parent": parent,  # 改为字符串格式
        "payload": {"data": updatepayload, "data_crc32c": int(crc32c.hexdigest(), 16)},
    }
)

2. 解决Protobuf版本冲突导致的部署卡住问题

GCF环境预装了特定版本的Protobuf依赖,手动在requirements.txt里强制更新版本会引发依赖冲突,导致部署无限期卡住。你需要:

  • 移除requirements.txt中手动指定的protobuf版本,改用GCF兼容的依赖声明
  • 若必须指定版本,使用与GCF预装版本兼容的范围,示例requirements.txt:
    google-cloud-secret-manager>=2.0.0,<3.0.0
    google-auth>=2.0.0
    google-crc32c>=1.0.0
    
    这些包会自动拉取兼容的Protobuf版本,避免冲突。

3. 验证GCF权限

确保你的Cloud Function服务账号拥有secretmanager.versions.add权限(可通过绑定Secret Manager Version Adder或Secret Manager Admin角色实现),避免后续出现权限类错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:20:19