Google cloud platform gcloud-错误:(gcloud.app.deploy)获取应用程序的权限错误

Google cloud platform gcloud-错误:(gcloud.app.deploy)获取应用程序的权限错误,google-cloud-platform,gcloud,google-cloud-build,google-cloud-iam,Google Cloud Platform,Gcloud,Google Cloud Build,Google Cloud Iam,我试图在google云上部署node 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 projec

我试图在google云上部署node 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']

部署app-to-app引擎最常见的方法是使用

当您针对app Engine Flex使用
gcloud app deploy
时,该服务使用云构建

完全有可能使用云构建来进行部署,只是需要更多的参与

我没有尝试过这一点,但我认为,如果您希望使用Cloud Build执行部署,则需要确保Cloud Build服务帐户具有部署到App Engine的权限


以下是您需要执行的操作的示例,特别是授予Cloud Build的服务帐户正确的权限。

默认的Cloud Build服务帐户不允许访问部署应用程序引擎。您需要启用云构建服务帐户来执行部署等操作

云构建服务帐户的格式如下:

[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
  • 转到Google云控制台->IAM&admin->IAM
  • 找到服务帐户并单击铅笔图标
  • 将角色“App Engine Deployer”添加到服务帐户

请等待几分钟,等待服务帐户进行全局更新,然后重试。

两个命令可以处理所需的PERM(如果已安装并验证gcloud sdk,请在终端中运行,或者在项目的cloud shell中运行):


今天我遇到了同样的错误,解决方法是在控制台上运行:
$gcloud auth login

这将打开一个新的浏览器选项卡,供您使用有权访问您尝试部署的项目的凭据登录

之后我就可以部署到gcloud了


附言:我不确定这是不是最好的方法,但我把它作为一个可能的解决方案,因为这是我通常解决这个问题的方法。最糟糕的情况是,我会得到纠正并学习一些新的东西。

“gcloud app deploy”工作正常,我可以通过本地系统的终端部署app。但我想将“云构建触发器”设置为从GitHubOK自动部署。请查看我引用的链接。这显示了如何授予云构建服务帐户部署到App Engine的权限。谢谢Daz。你解决了我的问题。用户体验真糟糕。感谢您的回复John,我还必须启用-App engine API,但现在收到以下消息-步骤#1:错误:(gcloud.App.deploy)您的部署已成功,但将新版本升级为默认版本失败。您可能没有更改流量拆分的权限。更改流量拆分需要所有者、编辑器、应用程序引擎管理员或应用程序引擎服务管理员角色。请与您的项目负责人联系,并使用
gcloud app services set traffic--splits=1
命令将流量重定向到新部署的版本。在将“app Engine Admin”角色添加到[project\u NUMBER]@cloudbuild.gserviceaccount.com后,我假设您已经设置了app Engine,这需要进行区域选择,启用服务等。现在您已经部署了应用程序,除了
gcloud-app-deploy
app-Engine-Deployer
权限之外,不需要任何其他权限。将云构建留给appengine Admin是可以的,因为这是一个由谷歌控制的安全服务。package.json中是否有任何选项可以像heroku一样在构建之后运行命令-postbuild@SachinVairagi我发现“项目编辑器”和“应用引擎部署器”权限足以使用Cloud Builder部署到GAE标准环境。
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