gcloud-错误:(gcloud.app.deploy)权限错误,正在提取应用程序

时间:2019-05-14 08:57:06

标签: 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 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']

4 个答案:

答案 0 :(得分:1)

将应用程序部署到App Engine的最常见方法是使用gcloud app deploy ...

当您对App Engine Flex使用maybe_job.as_ref().my_function().map(...)时,该服务将使用Cloud Build。

完全有可能|也可以使用Cloud Build进行您的部署,只是涉及更多。

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

这是您需要做的example,特别是为Cloud Build的服务帐户授予正确的role

答案 1 :(得分:1)

默认的Cloud Build服务帐户不允许访问以部署App Engine。您需要启用Cloud Build服务帐户以执行诸如部署之类的操作。

Cloud Build服务帐户的格式如下:

[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
  • 转到Google云控制台-> IAM和管理员-> IAM。
  • 找到服务帐户,然后单击铅笔图标。
  • 将角色“ App Engine Deployer”添加到服务帐户。

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

答案 2 :(得分:1)

两个命令可以处理所需的权限(如果已安装并经过身份验证的gcloud sdk在终端中运行,或者在项目的云外壳中运行):

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 

答案 3 :(得分:1)

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

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

之后,我能够部署到gcloud。

ps .:我不确定这是最好的方法,但是我将其作为可能的解决方案,因为这通常是我解决该问题的方式。最坏的情况是,我会纠正并学习一些新知识。