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

Bitbucket Pipeline部署Cloud Run报403提示project None如何解决

问题根因
  • 核心原因是你调用Secret Manager的access_secret_version接口时,传入的密钥资源名称没有补全完整路径,或者客户端初始化时未获取到有效的Google Cloud项目ID,导致拼接后的资源路径中项目位为None,触发权限错误。
  • 你在gcloud命令中指定的--project参数仅作用于gcloud命令本身,不会传递到容器内部的Django运行环境,因此Django代码无法拿到项目ID。
  • Cloud Build执行migrate、collectstatic步骤时,也未向容器注入项目ID环境变量,同样会触发该错误。
解决方案

1. 修正Django settings.py中密钥拉取代码

确保传入完整的密钥资源路径,不要依赖客户端自动补全项目ID,示例代码:

import os
from google.cloud import secretmanager

# 从环境变量读取项目ID,兜底可写死默认项目ID
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT", "你的实际项目ID")
SECRET_SETTINGS_NAME = os.getenv("SETTINGS_NAME")

# 拼接完整的密钥资源路径,格式固定为 projects/项目ID/secrets/密钥名/versions/版本号
secret_full_name = f"projects/{PROJECT_ID}/secrets/{SECRET_SETTINGS_NAME}/versions/latest"

client = secretmanager.SecretManagerServiceClient()
payload = client.access_secret_version(name=secret_full_name).payload.data.decode("UTF-8")

2. 给Cloud Build步骤注入项目ID环境变量

修改cloudbuild.yaml中的migrate和collectstatic步骤,增加GOOGLE_CLOUD_PROJECT环境变量注入,以migrate步骤为例:

args:
  [
    "-i",
    "gcr.io/${_PROJECT_ID}/${_SERVICE_NAME}",
    "-s",
    "${_PROJECT_ID}:${_REGION}:${_INSTANCE_NAME}",
    "-e",
    "SETTINGS_NAME=${_SECRET_SETTINGS_NAME}",
    # 新增项目ID环境变量
    "-e",
    "GOOGLE_CLOUD_PROJECT=${_PROJECT_ID}",
    "--",
    "python",
    "manage.py",
    "migrate",
  ]

collectstatic步骤做相同修改,新增对应环境变量即可。

3. 给Cloud Run部署配置注入项目ID

修改Bitbucket流水线中的gcloud run deploy命令,注入项目ID环境变量:

gcloud run deploy devapi --image $IMAGE_NAME --platform managed --region europe-west1 --project my-project \
--set-env-vars GOOGLE_CLOUD_PROJECT=my-project

4. 配置必要的IAM权限

在Google Cloud IAM控制台,给以下两个身份授予Secret Manager Secret Accessor角色(作用范围可选整个项目或者仅对应需要访问的密钥):

  • Cloud Build默认服务账号:格式为[项目数字ID]@cloudbuild.gserviceaccount.com
  • Cloud Run运行时服务账号:如果使用默认服务账号,格式为[项目号]-compute@developer.gserviceaccount.com,推荐单独创建专用服务账号分配权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:45:05