gcloud - 错误:(gcloud.app.deploy)权限错误获取应用程序
Posted
技术标签:
【中文标题】gcloud - 错误:(gcloud.app.deploy)权限错误获取应用程序【英文标题】:gcloud - ERROR: (gcloud.app.deploy) Permissions error fetching application 【发布时间】:2019-10-01 05:57:41 【问题描述】:我正在尝试在谷歌云上部署节点 js 应用程序,但出现以下错误 -
Step #1: ERROR: (gcloud.app.deploy) Permissions error fetching application [apps
/mytest-240512]. Please make sure you are using the correct project ID and that
you have permission to view applications on the project.
我正在运行以下命令 -
gcloud builds submit . --config cloudbuild.yaml
我的 cloudbuild.yaml 文件看起来像 -
steps:
#install
- name: 'gcr.io/cloud-builders/npm'
args: ['install']
#deploy
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
【问题讨论】:
【参考方案1】:默认的 Cloud Build 服务帐号不允许访问部署 App Engine。您需要启用 Cloud Build 服务帐号才能执行部署等操作。
Cloud Build 服务帐号的格式如下:
[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
转到 Google Cloud Console -> IAM 和管理 -> IAM。
找到服务帐户并点击铅笔图标。
将角色“App Engine Deployer”添加到服务帐号。
等待几分钟,让服务帐户全局更新,然后重试。
【讨论】:
感谢您的回复约翰,我还必须启用 - 应用引擎 API,但现在收到以下消息 - 步骤 #1:错误:(gcloud.app.deploy)您的部署已成功,但正在推广新版本默认失败。您可能无权更改流量拆分。更改流量拆分需要 Owner、Editor、App Engine Admin 或 App Engine Service Admin 角色。请联系您的项目所有者并使用gcloud app services set-traffic --splits <version>=1
命令将流量重定向到您新部署的版本。
在将“App Engine Admin”角色添加到 [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com 后现在可以工作了
我假设您已经设置了 App Engine,这需要选择区域、启用服务等。现在您已经部署了一个应用程序,除了 gcloud app deploy
和 @987654324 之外,您应该不需要任何其他东西@权限。可以通过 App Engine 管理员离开 Cloud Build,因为这是一项由 Google 控制的安全服务。
package.json 中是否有任何选项可以在构建后运行命令,如 heroku-postbuild
@SachinVairagi 我发现“项目编辑器”加上“App Engine Deployer”权限足以使用 Cloud Builder 部署到 GAE 标准环境。【参考方案2】:
将应用部署到 App Engine 的最常用方法是使用 gcloud app deploy ...
。
当您对 App Engine Flex 使用 gcloud app deploy
时,该服务使用 Cloud Build。
完全有可能|使用 Cloud Build 来进行部署也是合理的,只是涉及更多。
我没有尝试过,但我认为,如果您希望使用 Cloud Build 执行部署,则需要确保 Cloud Build 服务帐户具有部署到 App Engine 的权限。
这是您需要做的example,特别是为 Cloud Build 的服务帐号授予正确的role。
【讨论】:
'gcloud app deploy' 工作正常,我可以在本地系统上通过终端部署应用程序。但我想将“云构建触发器”设置为从 GitHub 自动部署 好的。请参阅我引用的链接。这显示了如何授予 Cloud Build 服务帐号部署到 App Engine 的权限。 谢谢达兹。你解决了我的问题。多么噩梦般的用户体验。 实际上您需要向默认应用引擎服务帐户授予多个权限,因为构建器会执行多项操作,例如上传到云存储以及构建。【参考方案3】:我今天遇到了同样的错误,我解决它的方法是在控制台上运行:$ gcloud auth login
。
这将打开一个新的浏览器选项卡,供您使用有权访问您尝试部署的项目的凭据登录。
之后我能够部署到 gcloud。
ps.:我不确定这是最好的方法,但我将其作为可能的解决方案,因为这是我通常解决此问题的方法。最坏的情况下,我会坚持纠正并学习新的东西。
【讨论】:
谢谢!这解决了我的问题。【参考方案4】:两个命令可以处理所需的权限(如果您安装了 gcloud sdk 并经过身份验证,则在您的终端中运行,或者在您的项目的云 shell 中运行):
export PROJECT_ID=[[put your project id here]]
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud iam service-accounts add-iam-policy-binding $PROJECT_ID@appspot.gserviceaccount.com \
--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
--role=roles/iam.serviceAccountUser \
--project=$PROJECT_ID
```
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
--role=roles/appengine.appAdmin
【讨论】:
以上是关于gcloud - 错误:(gcloud.app.deploy)权限错误获取应用程序的主要内容,如果未能解决你的问题,请参考以下文章
gcloud错误:ApiError:在新的util.ApiError中找不到
错误:(gcloud.compute.ssh)无法获取资源:-权限不足
错误:(gcloud.app.deploy)INVALID_ARGUMENT:无法解析源
从 gcloud 命令安装 Google Cloud 组件错误
错误:(gcloud.app.deploy)错误响应:[9] Cloud build XXXXXXXXXXXX 状态:FAILURE