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

npr*_*npr 21 deployment google-app-engine 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=
Run Code Online (Sandbox Code Playgroud)

====

$ 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].
Run Code Online (Sandbox Code Playgroud)

npr*_*npr 20

现在已经开始工作了.

$ gcloud app deploy --log-http --verbosity=debug
Run Code Online (Sandbox Code Playgroud)

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

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

  • 有关参考,请参阅https://cloud.google.com/appengine/docs/admin-api/accessing-the-api以获取启用API的链接. (2认同)

m.s*_*tos 10

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

  • App Engine Deployer
  • Storage Admin
  • Cloud Build Editor

访问控制文档

仅App Engine Deployer角色会授予足够的权限以使用Admin API进行部署。要使用其他App Engine工具(如gcloud命令),您还必须具有Storage Admin角色和Cloud Build Editor角色。

  • 还需要“App Engine 服务管理员”角色 (2认同)

小智 6

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

gcloud config list
Run Code Online (Sandbox Code Playgroud)

如果它与该帐户没有关联,则使用

gcloud auth login
Run Code Online (Sandbox Code Playgroud)

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