跨 Pub/Sub 订阅触发云函数
Posted
技术标签:
【中文标题】跨 Pub/Sub 订阅触发云函数【英文标题】:Trigger Cloud Function across Pub/Sub Subscription 【发布时间】:2021-12-27 19:44:17 【问题描述】:当我通过 Pub/Sub 订阅者收到消息时,我正在尝试触发云功能。该订阅者正在调用另一个项目(我可以在我的项目中看到消息)。但是现在,我需要触发一个云函数来消费消息。
你知道我应该怎么做吗?
【问题讨论】:
【参考方案1】:您不能在项目 B 中的 PubSub 主题上插入项目 A 中的 Cloud Functions。您需要部署 HTTP 函数并创建推送订阅以调用该函数。
注意:您可以在项目 A 或项目 B 中创建推送订阅。这一切都取决于订阅费用由谁支付。
【讨论】:
我有以下用例:项目 A 发布有关特定主题的消息。项目 B 需要订阅该主题。最近,我从 Project B 开始订阅了 Project A(这里我是通过 PULL 设置的)并且我已经能够接收到消息。此时,是否需要更改为 PUSH,然后部署 html Cloud Function 来消费消息? 当您使用 Cloud Functions 拉取消息时,您会创建订阅以拉取它们。这与 PUSH 订阅 HTTP 函数的情况相同。您必须创建一个可以在项目 A 或项目 B 中创建的 PULL 订阅。当您使用--trigger-topic
参数部署云功能时,就会出现问题。在这种情况下,不允许跨项目。
这里有关于这个的问题 => issuetracker.google.com/issues/62373846 和 issuetracker.google.com/issues/173534853
您可以尝试使用数据流作业作为项目之间的“桥梁”——监听项目 A 中的一个主题并将消息发送到项目 B 的另一个主题。缺点 - 成本(如果数量很大,或者您在项目 A) 中有很多传入主题,这可能没问题。潜在的好处 - 数据流作业可以做的不仅仅是将消息从一个项目复制到另一个项目。以上是关于跨 Pub/Sub 订阅触发云函数的主要内容,如果未能解决你的问题,请参考以下文章
访问 Google Cloud Storage 触发事件“Pub/Sub”?
GCP Pub/Sub - 如何从 BQ 计划查询中检索状态