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

为何GCP Cloud Run调用Python Pub/Sub库时不使用Compute Engine SA认证?

解决Cloud Run中Python Pub/Sub库报错“找不到service-account-key.json”的问题

问题分析

你遇到的报错核心原因是Cloud Run环境下无需依赖本地服务账号密钥文件,报错大概率来自两个点:

  • 服务环境变量中错误配置了GOOGLE_APPLICATION_CREDENTIALS,指向了不存在的本地密钥文件路径
  • 手动处理凭据时的自定义受众(audience)操作,干扰了Cloud Run默认的身份认证流程

解决方案

1. 清理错误的环境变量

登录Cloud Console,找到你的Cloud Run服务,进入编辑与部署新版本 -> 容器、变量、秘密和连接 -> 环境变量,检查是否存在GOOGLE_APPLICATION_CREDENTIALS变量,若有直接删除,保存后重新部署服务。

2. 简化Pub/Sub客户端代码

Cloud Run会通过工作负载身份自动提供合法凭据,无需手动处理凭据或自定义受众。简化后的代码如下:

import os
from google.cloud import pubsub_v1

# 保留你的gcloud测试命令
os.system('gcloud pubsub topics publish pubsub-test1 --message="test" --project=project1')

# 直接初始化Pub/Sub发布客户端
publisher = pubsub_v1.PublisherClient()
# 构建目标主题的路径
topic_path = publisher.topic_path("project1", "pubsub-test1")

# 发布消息示例(等待发布完成并处理结果)
future = publisher.publish(topic_path, b"test")
future.result()

3. 确认服务账号权限匹配

虽然你已为Compute Engine服务账号授予Pub/Sub Admin角色,仍需验证Cloud Run服务使用的是该账号:

  • 在Cloud Run服务的详情页面,查看服务账号字段,确认与你授权的账号一致
  • 若不一致,部署服务时通过--service-account参数指定正确的服务账号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:00:55