24

我正在尝试在谷歌云上部署节点 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

4 回答 4

49

默认的 Cloud Build 服务帐号不允许访问部署 App Engine。您需要启用 Cloud Build 服务帐号才能执行部署等操作。

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

[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
  • 转到 Google Cloud Console -> IAM 和管理员 -> IAM。
  • 找到服务帐户并单击铅笔图标。
  • 将角色“App Engine Deployer”添加到服务帐号。

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

于 2019-05-14T18:17:02.427 回答
5

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

当您gcloud app deploy针对 App Engine Flex 使用时,该服务使用 Cloud Build。

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

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

这是您需要做的一个示例,特别是授予 Cloud Build 的服务帐户正确的角色

于 2019-05-14T17:32:02.667 回答
5

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

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

之后我能够部署到 gcloud。

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

于 2020-06-08T19:33:43.293 回答
1

两个命令可以处理所需的权限(如果您安装了 gcloud sdk 并经过身份验证,则在终端中运行,或者在项目的 cloud 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 
于 2020-05-01T22:29:32.650 回答