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

gcloud 组件更新失败