部署 google 服务帐户时无权访问应用程序

Do not have permission to access app while deploying google service account

创建 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].

现在已经开始工作了。

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

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

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

添加到 npr 的回答中。 运行 如果您没有为您的默认 app/project 验证自己(在启用 API 之后),请在命令中执行此操作:

gcloud auth application-default login

运行 以下命令用于检查项目是否与正确的帐户相关联。

gcloud config list

如果它未与帐户关联,则使用

gcloud auth login

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

如果您正在尝试部署节点应用程序,这可能仍然不够。我的 API 已启用,我在 GCP's instructions 上进行了所有操作,但我仍然遇到 You do not have permission to access app 错误。最后通过向服务帐户添加两个角色来修复它:

  • 项目 > 浏览器
  • 云构建 > 云构建服务帐户

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

  • App Engine Deployer(部署新代码)
  • Storage Object Viewer(列出图片)
  • Storage Object Creator(上传图片)
  • Cloud Build Editor(创建构建)
  • App Engine Service Admin(推广新版本)

来自access control docs

The App Engine Deployer role alone grants adequate permission to deploy using the Admin API. To use other App Engine tooling, like gcloud commands, you must also have the Storage Admin role and Cloud Build Editor role.