使用gcloud将服务帐户部署到Google App Engine需要什么权限?

Ant*_*ong 9 google-app-engine gcloud

我创建了一个服务帐户,以便将项目部署到谷歌应用引擎.

我创建的服务帐户有以下两个角色:

  1. App Engine - > App Engine Deployer
  2. 存储 - >存储对象管理

我下载了json密钥文件,然后运行以下命令:

gcloud auth activate-service-account --key-file key.json
gcloud -q app deploy app_deploy.yaml --version 1.0 --promote
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

ERROR: (gcloud.app.deploy) Error Response: [403] Operation not allowed

Details: [
  [
    {
      "@type": "type.googleapis.com/google.rpc.ResourceInfo",
      "description": "The \"appengine.applications.get\" permission is required.",
      "resourceType": "gae.api"
    }
  ]
]
Run Code Online (Sandbox Code Playgroud)

我错过了什么角色?

fra*_*567 10

截至 2020 年 1 月,App Engine 角色文档指出:

注意:App Engine 部署者 (roles/appengine.deployer) 角色单独授予使用 App Engine Admin API 进行部署的足够权限。要使用其他 App Engine 工具(例如 gcloud 命令),您还必须具有 Compute Storage Admin (roles/compute.storageAdmin) 和 Cloud Build Editor (cloudbuild.builds.editor) 角色。

然而,这并不完全正确:

  1. cloudbuild.builds.editor不够的(我在文档怀疑是错误这里)。事实上,CLI 显然需要storage.objects.listcloudbuild.builds.builder.
  2. 部署后,您将收到错误消息,因为您无权更改流量拆分。因此,您需要roles/appengine.serviceAdmin.

所以,这是对我有用的角色列表:

  • roles/appengine.deployer
  • roles/appengine.serviceAdmin
  • roles/compute.storageAdmin
  • roles/cloudbuild.builds.builder

  • 这可行,但我必须执行 Cloud Build Service Account 而不是 Cloud Build Builds Builder。此外,存储管理员角色只需要添加到暂存桶中,不需要适用于整个项目。 (3认同)

Ant*_*ong 7

如果我取代的作用它的工作原理App Engine -> App Engine DeployerApp Engine -> App Engine Admin

不知道为什么Deployer不足以部署应用程序。

  • 迄今为止,以下组合对我有用:`App Engine Deployer`、`App Engine Service Admin` 和`Cloud Build Service Account`。希望这可以帮助! (2认同)