在部署Google服务帐户时,无权访问应用

时间:2016-09-20 12:44:54

标签: google-app-engine deployment service-accounts

创建具有权限的Google服务帐户后,如下所示 - 部署失败并显示消息。我无法理解这出错的地方。

====

$ gcloud iam service-accounts get-iam-policy cdemail@appid.iam.gserviceaccount.com
bindings:
- members:
  - serviceAccount:cdemail@appid.iam.gserviceaccount.com
  role: roles/owner
etag: Bxxxxxxxxg=

====

$ gcloud auth activate-service-account --key-file ../a.json 
Activated service account credentials for: [cdemail@appid.iam.gserviceaccount.com]

$ gcloud app deploy
ERROR: (gcloud.app.deploy) You do not have permission to access app [appid].

5 个答案:

答案 0 :(得分:19)

现在已经开始工作了。

$ gcloud app deploy --log-http --verbosity=debug

失败的原因似乎与启用App Engine API有关(链接显示在命令输出中)。启用api - 然后再次尝试部署(这次没有--log-http,因为这会导致gcloud崩溃)。

您可以通过Google Cloud Platform API控制台页面启用“Google App Engine管理API”。 https://console.cloud.google.com/apis/api/appengine.googleapis.com/

答案 1 :(得分:5)

运行以下命令以检查项目与正确帐户关联的天气。

gcloud config list

如果与帐户无关,请使用

gcloud auth login

使用正确的项目帐户进行配置。

答案 2 :(得分:3)

对于那些尝试使用服务帐户和gcloud命令进行部署的用户,您将需要设置以下三个角色:

  • App Engine Deployer
  • Storage Admin
  • Cloud Build Editor

来自access control docs

  

仅App Engine Deployer角色会授予以下权限:   使用Admin API进行部署。要使用其他App Engine工具,例如   gcloud命令,您还必须具有Storage Admin角色和Cloud   构建编辑者角色。

答案 3 :(得分:1)

添加到npr的答案。如果您尚未为自己的默认应用程序/项目进行身份验证(在启用API之后),请在命令中运行此命令:

gcloud auth application-default login

答案 4 :(得分:1)

如果您尝试部署节点应用程序,则可能仍然不够。我的API已启用,我遵循了GCP's instructions上的所有内容,但是仍然出现<router-view>错误。最后,通过向服务帐户添加两个角色来解决此问题:

  • 项目>浏览器
  • Cloud Build> Cloud Build服务帐户