开发者问题收集

gcloud.app.deploy 错误响应:[13] 无法创建云构建:无效存储桶

2024-03-25
611

突然,几天前,一个 Go 应用的 gcloud app deploy 完全崩溃了。

重现步骤:

  1. 任何 gmail 帐户注册 Google Cloud Platform,并在那里创建一个结算帐户(有免费试用版)。
  2. 安装 Google Cloud CLI(包括 Beta 版)并执行 gcloud init / gcloud auth login <your_gmail>
  3. 创建一个新项目: gcloud projects create xxx-yyy
  4. 为其启用结算功能: gcloud beta billing projects link xxx-yyy --billing-account XXX-YYY-XXX
  5. 为此项目创建 App Engine: gcloud app create --project xxx-yyy
  6. 部署app: gcloud app deploy --appyaml myapp.yaml --project xxx-yyy
  7. 您很快就会(在成功上传应用程序的文件后)收到此错误:
ERROR: (gcloud.app.deploy) Error Response: [13] Failed to create cloud build: invalid bucket "205143635137.cloudbuild-logs.googleusercontent.com"; default Cloud Build service account or user-specified service account does not have access to the bucket
com.google.net.rpc3.client.RpcClientException: <eye3 title='/ArgoAdminNoCloudAudit.CreateBuild, INVALID_ARGUMENT'/> APPLICATION_ERROR;google.devtools.cloudbuild.v1/ArgoAdminNoCloudAudit.CreateBuild;invalid bucket "205143635137.cloudbuild-logs.googleusercontent.com"; default Cloud Build service account or user-specified service account does not have access to the bucket;AppErrorCode=3;StartTimeMs=1711390344614;unknown;ResFormat=uncompressed;ServerTimeSec=9.701026299;LogBytes=256;Non-FailFast;EndUserCredsRequested;EffSecLevel=none;ReqFormat=uncompressed;ReqID=a06ef84bab72e6f6;GlobalID=0;Server=[2002:a1b:7246:0:b0:32b:ca81:def]:4001.

请注意,您在步骤 1 中使用的帐户完全无关紧要。我使用了 4 个不同的帐户,其中注册了 GCP(包括我注册多年的帐户,以及我使用上述命令部署了数百个应用程序的项目),错误始终完全相同。当然,只有存储桶地址中的项目编号不同。

另请注意,3 月 22 日(即 3 天前)一切仍运行良好 - 当天我已成功部署了几个项目和应用程序。

另请注意,只有 3 月 22 日之后创建的新项目才会受到影响。对于较旧的项目, gcloud app deploy 仍然可以完美运行。

我发现较新的项目在 IAM 中获得了不同的默认权限集,因此 Google 肯定在 3 月 22 日左右更改了一些敏感内容。但我不知道哪一个是造成此问题的原因——我尝试将旧项目拥有的所有权限添加到新项目中,但仍然出现相同的错误。我也尝试了我能在 Google 上找到的所有其他解决方案(比如在“Cloud Build 设置”页面上启用“App Engine Admin”并再次执行 gcloud auth login )——但都无济于事。

看起来 Google 要么在 3 天前破坏了某些东西,要么在没有通知用户的情况下做出了一些不兼容的更改。通过阅读错误消息,我可以理解构建过程无法访问某些用于写入 Cloud Build 日志的内部存储桶,并因此失败。但由于这个存储桶是隐藏的,我甚至无法检查它的权限。我认为它应该由 Google 正确且自动地设置,而这正是 Google Cloud 文档针对使用默认日志存储桶的情况所说的(就像我一样)。我迷路了。

PS。 myapp.yaml 非常简单,我不认为问题与 Go 本身有关:

runtime: go121
app_engine_apis: true

main: mydomain/mypkg

env_variables:
  VAR: value

automatic_scaling:
  max_concurrent_requests: 80
  target_cpu_utilization: 0.6

handlers:
  - url: /.*
    script: auto
    secure: always

PPS。已经有一个 类似问题 ,但我创建了一个新的,因为我有更多详细信息要分享。

2个回答

这是一次 GCP 中断。他们提供了一种对我有用的解决方法,你必须在你尝试部署的项目中启用 Compute Engine API。

clicks
2024-03-26
bob
2024-03-26