应用引擎部署:获取应用程序权限错误

5
我们正在使用服务账户通过Travis将应用部署到App Engine。
在每个合并的PR中,Travis从我们的GitHub仓库拉取代码,并拉取包含Google Cloud SDK的Docker镜像,执行gcloud app deploy命令。我们使用一个拥有“项目所有者”权限的服务账户来执行部署操作。
一切都正常工作,直到我向项目添加了一个新的服务,该服务自动生成和更新SSL证书,并添加了一个dispatch.yaml文件以路由来自Let's Encrypt的流量进行域验证。我需要添加更多权限以允许更新我们用于自定义域的SSL证书。我删除了当前的服务账户,并创建了一个带有新私钥的新账户。我创建了一个新角色,具备更新和查看SSL证书所需的权限,以及之前的所有appengine.*权限。我将新角色“项目所有者”角色分配给了新账户。在这些更改之后,执行deploy命令时出现以下错误导致部署失败:
Permissions error fetching application [apps/hollowverse-c9cad]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.

我在本地机器上使用相同的服务帐户,并将日志级别设置为调试。 我收到了以下错误:

DEBUG: HttpError accessing <https://appengine.googleapis.com/v1/apps/hollowverse-c9cad?alt=json>: response: <{'status': '403', 'content-length': '335', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'vary': 'Origin, X-Origin, Referer', 'server': 'ESF', '-content-encoding': 'gzip', 'cache-control': 'private', 'date': 'Wed, 02 Aug 2017 14:33:50 GMT', 'x-frame-options': 'SAMEORIGIN', 'alt-svc': 'quic=":443"; ma=2592000; v="39,38,37,36,35"', 'content-type': 'application/json; charset=UTF-8'}>, content <{
  "error": {
    "code": 403,
    "message": "Operation not allowed",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ResourceInfo",
        "resourceType": "gae.api",
        "description": "The \"appengine.applications.get\" permission is required."
      }
    ]
  }
}
>
DEBUG: (gcloud.beta.app.deploy) Permissions error fetching application [apps/hollowverse-c9cad]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.

描述说需要使用appengine.applications.get来执行部署。查看分配给我们用于部署的Travis账户所分配的角色授予的权限,可以清楚地看到已经授予了appengine.applications.get权限。

screenshot_20170802_174402

我已将所有可能的应用引擎和项目角色分配给该帐户,但部署仍然失败并显示相同的错误。然而,使用默认服务帐户似乎可以正常工作,该帐户会自动为GCP上的每个新项目创建。
1个回答

6
我删除了当前的服务账户,并创建了一个新的带有新私钥的账户。但是问题出现了,新账户与之前的账户具有相同的ID。虽然我在任何文档中都找不到这种行为的说明,但看起来一旦服务账户使用了一个ID,即使之前的账户已经被删除,该ID也不能再次用于新账户。我们创建了一个带有新ID(travis2@hollowverse-c9cad.iam.gserviceaccount.com)而不是 travis@hollowverse-c9cad.iam.gserviceaccount.com),问题现已解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接