首页 > 解决方案 > 无法将应用程序部署到 App Engine,它失败并显示“无法写入暂存存储桶”和“无法解析资源”

问题描述

我正在使用 gcloud SDK 尝试将 Dockerfile 和 app.yaml 部署到应用引擎。我的 App Engine 服务帐户具有项目编辑者和存储管理员以及 SQL 客户端角色,并且 Cloud Build、App Engine 和 App Engine Flexible API 都已启用。尽管如此,我仍然在使用 gcloud beta 时遇到此错误:

    ERROR: (gcloud.beta.app.deploy) Error Response: [7] Unable to write to staging bucket staging. 
   <project name>.appspot.com. Please grant access to the App Engine service account on your project 
   by visiting https://console.developers.google.com/storage/browser?project=<project name>

以及香草 gcloud 的这个(不太清楚)错误:

ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: unable to resolve source

在另一个沙盒/开发项目中,我没有这个问题,但在这个生产项目中,情况并非如此。手动添加 SA 没有任何区别。奇怪的是,部署正在将文件写入暂存桶,所以我不相信这个错误。似乎失败的地方是紧随其后的步骤——也许 App Engine 灵活服务帐户代理想要访问它们;可能需要将 Dockerfile 传递给 Cloud Build SA;但无论如何,我已经尝试了向 App Engine 和 Cloud Build SA 及其代理授予存储桶访问权限的所有组合,但都没有奏效。

我的用户帐户具有分配给它的应用引擎部署者角色,即使使用其编辑者角色模拟应用引擎帐户也没有任何区别。Cloud Build 也具有 App Deployer 角色。

标签: google-app-enginegcloudgoogle-iam

解决方案


Vanilla GCloud 的错误表明您的服务帐户可能缺少某些权限。尝试在您的项目中禁用并重新启用 Cloud Build API,以便创建一个新的服务帐号。

这可确保 Cloud Build 有权开始构建。

此外,请确保在尝试部署之前等待几分钟(例如 10 分钟左右),以便可以将权限传播到所有系统。


推荐阅读