容器内使用Firestore报403 Missing or insufficient permissions错误求助
问题排查及解决方法
- 检查依赖安装情况
确认requirements.txt中已明确安装对应版本的google-cloud-firestore包,避免和已安装的google-cloud-storage出现版本兼容冲突,可参考如下固定版本号配置:google-cloud-firestore==2.11.1 google-cloud-storage==2.7.0 - 修正Firestore客户端初始化逻辑
避免容器环境变量读取异常导致的凭证加载失败,改为显式加载凭证文件:from google.cloud import firestore from google.oauth2 import service_account creds = service_account.Credentials.from_service_account_file('/usr/src/app/cred.json') db = firestore.Client(credentials=creds, project=你的项目ID) - 排查网络访问限制
Firestore访问端点和Cloud Storage不同,需要容器出站开放firestore.googleapis.com的443端口访问权限,你可以进入运行中的容器执行以下命令验证连通性:
若连通失败,检查容器所在环境的防火墙规则、VPC服务控制策略,是否拦截了Firestore API的访问请求。curl https://firestore.googleapis.com/$discovery/rest?version=v1 - 核对Firestore服务配置
登录GCP控制台确认以下配置:- 初始化客户端传入的
projectID和服务账号所属项目为同一个 - 对应项目的Firestore服务已完成初始化,且选择的是原生模式,若选择Datastore模式使用Firestore客户端访问会直接报错
- 初始化客户端传入的
- 修正Dockerfile冗余配置
当前Dockerfile中CMD和ENTRYPOINT配置重复,可删除CMD ["main.py"]行,避免启动参数冲突。
内容的提问来源于stack exchange,提问作者Jasmine
相关产品推荐
相关产品推荐

