gcloud.app.deploy 错误响应:[13] 无法创建云构建:无效存储桶
突然,几天前,一个 Go 应用的
gcloud app deploy
完全崩溃了。
重现步骤:
- 为 任何 gmail 帐户注册 Google Cloud Platform,并在那里创建一个结算帐户(有免费试用版)。
-
安装 Google Cloud CLI(包括 Beta 版)并执行
gcloud init
/gcloud auth login <your_gmail>
-
创建一个新项目:
gcloud projects create xxx-yyy
-
为其启用结算功能:
gcloud beta billing projects link xxx-yyy --billing-account XXX-YYY-XXX
-
为此项目创建 App Engine:
gcloud app create --project xxx-yyy
-
部署app:
gcloud app deploy --appyaml myapp.yaml --project xxx-yyy
- 您很快就会(在成功上传应用程序的文件后)收到此错误:
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。已经有一个 类似问题 ,但我创建了一个新的,因为我有更多详细信息要分享。
这是一次 GCP 中断。他们提供了一种对我有用的解决方法,你必须在你尝试部署的项目中启用 Compute Engine API。