部署第二代Google Cloud Function失败,权限配置问题求助
解决第二代Cloud Functions存储触发部署失败问题
问题核心
你给错了服务账户权限——报错里要求授权的是Cloud Storage官方托管服务账户,不是你列出的项目内自有服务账户。这个账户不在gcloud iam service-accounts list的输出里,属于GCP全局托管的服务账户池。
解决步骤
1. 获取项目编号
执行命令拿到你的项目数字编号:
gcloud projects describe myproject --format='value(projectNumber)'
把输出的一串数字(比如123456789012)记下来。
2. 定位Cloud Storage专属服务账户
该账户的固定格式为:service-${项目编号}@gcp-sa-storage.iam.gserviceaccount.com
比如项目编号是123456789012,对应的邮箱就是service-123456789012@gcp-sa-storage.iam.gserviceaccount.com
3. 授予Pub/Sub Publisher角色
用命令行直接配置(比控制台操作更精准):
gcloud projects add-iam-policy-binding myproject \ --member="serviceAccount:service-${项目编号}@gcp-sa-storage.iam.gserviceaccount.com" \ --role="roles/pubsub.publisher"
也可以在GCP控制台的IAM页面,直接搜索上述邮箱地址,手动添加Pub/Sub Publisher角色。
4. 重新部署函数
再次执行你的部署命令即可。
额外检查项
- 确保执行部署命令的账户拥有
roles/owner,或同时拥有roles/cloudfunctions.admin+roles/iam.serviceAccountAdmin权限,避免操作被权限限制。 - 确认目标存储桶
se_my_images存在,且与函数属于同一项目、同一区域。
内容的提问来源于stack exchange,提问作者jola
相关产品推荐
相关产品推荐

