12

我在我的 GCP 项目中设置了 Cloud Build Trigger,以便通过 .yaml 文件从 Cloud Source Repository 部署 Cloud Function。一切似乎都已根据官方文档正确设置并授予权限,但是当我通过手动运行触发器来测试触发器时,出现以下错误:

错误: (gcloud.functions.deploy) ResponseError: status=[403], code=[Forbidden], message=[缺少必要的权限 iam.serviceAccounts.actAs 用于资源 [MY_SERVICE_ACCOUNT]。请授予角色/iam.serviceAccountUser 角色。您可以通过运行 'gcloud iam service-accounts add-iam-policy-binding [MY_SERVICE_ACCOUNT] --member= --role=roles/iam.serviceAccountUser']

现在首先,运行建议的命令甚至不起作用,因为建议的语法不好(缺少“member =”的值)。但更重要的是,我已经将该角色添加到错误消息所抱怨的服务帐户中。我尝试从 UI 和 CLI 中删除它,然后将其添加回来,但仍然始终显示此错误。

为什么?

4

1 回答 1

31

经过大量的试验和错误,我想通了。文档似乎不正确(缺少一些额外的必要权限)。我用这个答案让我到达那里。

简而言之,您还需要将cloudfunctions.developerandiam.serviceAccountUser角色添加到[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com帐户中,并且(我相信)前面提到的 cloudbuild 服务帐户也需要添加为有权部署您的 Cloud Function 的服务帐户的成员(再次显示在链接的SO答案)。

文档确实应该反映这一点。

祝你好运!

于 2019-05-02T10:12:46.717 回答