【问题标题】:appengine / unable to deploy / iam troubleshootingappengine / 无法部署 / iam 故障排除
【发布时间】:2019-11-16 10:20:00
【问题描述】:

给定的服务帐号是{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 云构建,构建已创建,但每次都失败(因此它与从命令行返回的给定错误匹配)

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

问候

【问题讨论】:

  • 你启用了cloud builder api吗?
  • @marian.vladoi 如上所述:Checking Google cloud build on the gcloud ui, the build is created, but fails everytime 所以是的,它已启用,为每个gcloud app deploy 命令创建构建,每个构建都会立即崩溃并出现上述错误
  • 您是否使用了正确的帐户 - gcloud auth list?
  • 是的,它也被检查过了,运行此命令确实显示该帐户是默认帐户(服务帐户名称左侧有一个 *)
  • 老实说,感觉就像有一个不透明的错误,我创建了另一个项目来验证相同的设置;它完美地工作。真的感觉就像大海捞针。问题是,我现在担心这样的问题可能会再次发生,所以我最好找出这里发生的事情

标签: google-app-engine google-cloud-build google-iam


【解决方案1】:

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

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

  2. service-@containerregistry.iam.gserviceaccount.com,Google Container Registry Service Agent,角色:编辑

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

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

默认情况下,Cloud Run 修订版使用 Compute Engine 默认值 服务帐号 (PROJECT_NUMBER-compute@developer.gserviceaccount.com),其中包含 项目 > 编辑 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,Cloud Build 服务帐号,角色:Cloud Build Service Agent

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

命令:gcloud beta app repair

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

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

一个。 [project-id].appspot.com

b. staging.[project-id].appspot.com

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

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

所以我认为您不小心删除了暂存存储桶或服务帐户。

【讨论】:

    【解决方案2】:

    既不透明又高效:gcloud beta app repair,它将所需的 App Engine 功能恢复到当前应用程序

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多