【问题标题】:Can Cloud Functions for Firebase be used across projects?Cloud Functions for Firebase 可以跨项目使用吗?
【发布时间】:2017-10-03 05:13:16
【问题描述】:

每当新的 Pub/Sub 消息发送到第三方项目(即跨项目)中的主题/订阅时,我希望触发 Pub/Sub 功能(使用 functions.pubsub / onPublish)。

经过一些研究和实验,我发现如果主题名称包含 / 并且默认为“projects/”+ process.env.GCLOUD_PROJECT +“/topics/”+主题(https://github.com/firebase/firebase-functions/blob/master/src/providers/pubsub.ts),TopicBuilder 会引发错误。

我还在 Stack Overflow 上发现了一篇帖子,上面写着“Firebase 提供了一个(相对较薄的)Google Cloud Functions 包装器” (What is the difference between Cloud Function and Firebase Functions?)

这促使我研究了 Google Cloud Functions。虽然我能够在我拥有的项目中为第三方项目中的主题创建订阅 - 在 IAM 中更改权限后 - 我找不到将函数与主题相关联的方法。我也没有成功地将功能与第三方项目中的主题和订阅相关联。在控制台中,我只能看到项目中的主题,并且使用 gcloud 没有成功。

有没有人成功地跨项目使用函数,如果有,您是如何实现的?是否有可以提供的文档 URL?如果一个函数不能被第三方项目中的主题和订阅的消息触发,你能想出一种方法来摄取第三方 Pub/Sub 数据吗?

由于 Pub/Sub 费用计入包含订阅的项目,我希望订阅驻留在具有该主题的第三方项目中。

谢谢

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    Google Cloud Functions 目前不允许函数侦听另一个项目中的资源。特别是对于 Cloud Pub/Sub 触发器,您可以通过部署 HTTP 函数并将 Pub/Sub 推送订阅添加到要触发该跨项目函数的主题来解决此问题。

    【讨论】:

    • @Thomas_Bouldin 不会要求您的 Firebase CF http 侦听器是没有身份验证的公共端点吗?
    • 这将要求您滚动自己的身份验证。一种廉价且简单的方法是在发布 URL 中添加一个密钥作为查询片段。您的云函数会拒绝与密钥不匹配的请求。
    • Pub/sub 还要求您进行域所有权验证,这很让人头疼,尤其是在您尝试部署简单的云功能时:cloud.google.com/pubsub/docs/push#domain_ownership_validation
    【解决方案2】:

    google 端点可以是一个更简单的解决方案,可以将身份验证添加到函数 http。

    【讨论】:

    • 这不是答案。
    • @AnkitAgarwal 我试图添加评论,但不幸的是我不能,但我认为强调如何保护是有效的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2018-01-03
    • 2022-12-01
    • 1970-01-01
    相关资源
    最近更新 更多