Google cloud functions 从PubSub推送订阅验证云功能

Google cloud functions 从PubSub推送订阅验证云功能,google-cloud-functions,google-cloud-pubsub,Google Cloud Functions,Google Cloud Pubsub,我们使用PubSub进行排队,使用推送订阅指向http触发的云函数。根据文档,Cloud Run和App Engine都将对来自PubSub的请求进行身份验证,但未列出云功能。我们使用了其他google服务,比如scheduler来调用需要身份验证的函数,但在PubSub上却没有这样做 我的问题是,云功能是否支持通过订阅aim帐户集从PubSub进行身份验证,还是需要该功能读取并处理JWT本身以进行身份验证?Pub/Sub订阅支持使用“推送”对订阅使用服务帐户身份验证 要使用服务帐户,只需指定云

我们使用PubSub进行排队,使用推送订阅指向http触发的云函数。根据文档,Cloud Run和App Engine都将对来自PubSub的请求进行身份验证,但未列出云功能。我们使用了其他google服务,比如scheduler来调用需要身份验证的函数,但在PubSub上却没有这样做


我的问题是,云功能是否支持通过订阅aim帐户集从PubSub进行身份验证,还是需要该功能读取并处理JWT本身以进行身份验证?

Pub/Sub订阅支持使用“推送”对订阅使用服务帐户身份验证

要使用服务帐户,只需指定云函数的端点,启用身份验证并添加一个服务帐户,用于向云函数发送请求。确保服务帐户具有访问PubSub和cloud功能的适当权限


你需要不同的东西:

  • 具有角色/cloudfunctions.invoker的服务帐户
  • 勾选
    启用身份验证
  • 选择您的服务帐户
  • 在受众字段中添加云函数URL(如云函数中提供的)。这是Ricco答案中缺少的部分


编辑1


PubSub需要具有在服务帐户上生成令牌的授权。检查一下。在这里,它显示了如何将pubsub服务代理服务帐户授予为令牌创建者。

是,它支持。你能分享你的推送订阅配置吗?订阅基本上被设置为@Ricco的答案如下。我尝试过不同级别的服务帐户,但没有成功。监视始终显示订阅的401结果。谢谢@Ricco,所以我这样做了,甚至添加了一个所有者服务帐户,但仍然拒绝访问(401)。据我所知,使用的服务帐户只需要cloudfunction.invoke才能调用该函数。有什么建议吗?服务帐户需要哪些PubSub权限?我假设服务设置与云运行时使用的服务设置相同。这个答案的问题是,它不包括正确运行身份验证所需的访问群体字符串。是的,我拥有所有这些,但它仍然没有进行身份验证。一定还有别的事。我知道当我用
--allow authenticated
重新安装函数时,这个过程是有效的,一切都按预期进行。因此,我假设这是一个权限配置问题。401未经授权:您的身份验证有效,但您没有权限。已删除并重新创建具有不同名称的订阅。相同的结果401,需要验证。我使用了一个具有所有者的服务帐户,删除了具有相同结果的服务帐户,并使用具有所有者权限的服务帐户重新创建了订阅,得到了相同的结果401,需要身份验证。我发现这有点令人担忧,它根本没有提到函数。我已成功从云调度器调用函数。我真的不知道为什么它在PubSub上不起作用。也许我只是把函数移到Cloud Run。虽然我希望能保持一个良好的状态,谢谢你,纪尧姆,谢谢你花了这么多时间和我在一起,并努力解决这个问题。本例中的问题是受众字符串。我使用了与端点相同的字符串,这是一条比函数上定义的触发器更长的路径。这对将来的人来说应该是一个很好的参考。