0

给定的服务帐户是{project_id}@appspot.gserviceaccount.com

它具有以下 iam 角色:

  • Editor
  • Cloud Build Editor(手动添加,以验证是否是此问题背后的原因)

我有 :

  • 在我的笔记本电脑上下载了相应的服务帐户密钥到{local_path}/.gcloud.json
  • 通过激活此服务帐户gcloud auth activate-service-account {project_id}@appspot.gserviceaccount.com --key-file={local_path}/.gcloud.json
  • $GOOGLE_APPLICATION_CREDENTIALS环境变量设置为 {local_path}/.gcloud.json

部署如下:

gcloud app deploy --project {project_id} \
  --quiet \
  --verbosity=debug \
  --account {project_id}@appspot.gserviceaccount.com \
  ./dispatch.yaml \
  ./app/app.yaml

我一直遇到以下错误:

"Permission to create cloud build is denied. 'Cloud Build Editor' role is required for the deployment: ht..."

在 gcloud ui 上检查 Google 云构建,构建已创建,但每次都失败(因此它匹配从命令行返回的给定错误)

我只是不知道为什么会这样;任何帮助将不胜感激

问候

4

2 回答 2

2

启用 Cloud Run Api 时,会创建 3 个服务帐户:

  1. compute@developer.gserviceaccount.com,默认计算服务帐号,角色:编辑

  2. service-@containerregistry.iam.gserviceaccount.com,谷歌容器注册服务代理,角色:编辑

  3. service-@serverless-robot-prod.iam.gserviceaccount.com,Google Cloud Run 服务代理,角色:Cloud Run 服务代理

最后两个服务帐户是 Google 管理的服务帐户,用于访问 Google Cloud Platform 服务链接的 API

默认情况下,Cloud Run 修订版使用 Compute Engine 默认服务帐号 (PROJECT_NUMBER-compute@developer.gserviceaccount.com),该帐号具有 Project > Editor IAM 角色。这意味着默认情况下,您的 Cloud Run 修订版具有对 GCP 项目中所有资源的读写权限。

启用 Google App Engine Flexible Environment API 时,会创建 2 个与 Cloud Run 相关的服务帐号:

  1. @cloudbuild.gserviceaccount.com,角色:Cloud Build 服务帐号

  2. service-@gcp-sa-cloudbuild.iam.gserviceaccount.com,云构建服务账号,角色:云构建服务代理

启用 App Engine Admin API 时,不会创建额外的服务帐户。

命令 :gcloud beta app repair

如果 App Engine 暂存存储桶已被删除,此命令将恢复它。它将不再恢复服务帐户,而是必须使用 IAM 服务帐户取消删除 API。

部署谷歌应用引擎后,谷歌云存储中至少创建了4个桶:

一种。[项目 ID].appspot.com

湾。staging.[project-id].appspot.com

C。artifacts.[project-id].appspot.com

d。vm-containers.[project-id].appspot.com

因此,我认为您意外删除了暂存存储桶或服务帐户。

于 2019-11-16T11:17:44.203 回答
0

as opaque as effective : gcloud beta app repair,它将所需的 App Engine 功能恢复到当前应用程序

于 2019-11-16T13:42:48.803 回答