如何给Google Cloud Eventarc正确的权限,以便它可以触发云功能?

jol*_*ola 6 google-cloud-platform google-cloud-pubsub google-cloud-functions google-cloud-iam

我已经根据谷歌教程成功部署了带有存储触发器的第二代云功能。

当我在 shell 中运行测试命令时,云函数可以工作。但是,如果我尝试将文件上传到我的存储桶,则不会调用 can 函数。

我可以看到该事件触发了 pubsub 主题:

在此输入图像描述

在 Eventarc 中我可以看到问题的迹象:

在此输入图像描述

所以,我外行分析云函数调用失败的原因是我缺乏Eventarc接收来自PubSub的消息的权限(?)。我已阅读Eventarc 故障排除Eventarc 访问控制,并尝试将 eventarc 管理员角色添加到 eventarc 服务帐户(如下图所示),但没有结果。(我还将它添加到我能找到的任何其他服务帐户中,使计算服务帐户项目所有者等,但没有运气)。我缺少什么?

在此输入图像描述

(请注意,我之前有一个关于此问题的问题,但范围更广,但我选择了一个新的、更具体的问题)

Maz*_*sun 0

您使用了Compute Engine默认服务帐户。

您需要为此服务帐户授予所需的权限:

根据文档:

确保用于应用程序默认凭据的运行时服务帐户密钥具有 cloudfunctions.serviceAgent 角色或 storage.buckets.{get, update} 和 resourcemanager.projects.get 权限。有关设置这些权限的更多信息,请参阅授予、更改和撤销对资源的访问权限。

请检查IAM页面默认服务帐户是否具有以下权限:

  • cloudfunctions.serviceAgent
  • storage.buckets.{获取,更新}
  • 资源管理器.projects.get

另外,请随时检查Cloud logging以查看确切的错误和缺少的权限。