google-app-engine - 无法将应用程序部署到 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 角色。
解决方案
Vanilla GCloud 的错误表明您的服务帐户可能缺少某些权限。尝试在您的项目中禁用并重新启用 Cloud Build API,以便创建一个新的服务帐号。
这可确保 Cloud Build 有权开始构建。
此外,请确保在尝试部署之前等待几分钟(例如 10 分钟左右),以便可以将权限传播到所有系统。
推荐阅读
- spring - 使用嵌入式 tomcat 未在 Spring Boot 中映射请求
- php - 奏鸣曲碳库中的当年使用方法
- java - 如何在不创建 File 对象的情况下将 BufferedImage 附加到 MimeBodyPart
- python - 将变量与正则表达式变量进行比较
- python - 为什么 Urlopen 在某些网站上运行缓慢
- excel - 水平数据上 MATCH 函数的替代方法
- ios - 当我运行 appium 代码时,出现类似“处理命令时发生未知服务器端错误”的错误
- vue.js - Vue.draggable:为什么不能将子项拖到另一个项上?
- sql - oracle sql中特定条件下的用户输入
- javascript - 如何将选项从 HTML 推送到 JS 中的对象数组?