我正在尝试在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']
答案 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的权限。
答案 1 :(得分:1)
默认的Cloud Build服务帐户不允许访问以部署App Engine。您需要启用Cloud Build服务帐户以执行诸如部署之类的操作。
Cloud Build服务帐户的格式如下:
[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
请等待几分钟,以使服务帐户全局更新,然后重试。
答案 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 .:我不确定这是最好的方法,但是我将其作为可能的解决方案,因为这通常是我解决该问题的方式。最坏的情况是,我会纠正并学习一些新知识。