发布订阅 HTTP POST?

Pubsub HTTP POST?

我正在使用一项服务,该服务将通过 HTTP POST 请求将数据转发到您选择的 URL。

有没有一种简单的方法可以使用 POST 发布到 Pubsub 主题?我正在使用的服务(Hologram.io 的 Advanced Webhook Builder)无法存储任何文件,因此我无法上传 Google 云服务帐户 JSON 密钥文件。

谢谢, 瑞安

您在使用案例中遇到了 2 个挑战:

  • 格式
  • 身份验证

格式

您需要自定义 webhook 以符合 PubSub 格式。一些 webhoock 对此足够可定制,但并非所有情况都是如此。如果您不能像 PubSub 期望的那样自定义 webhook 调用,则需要使用中间层(例如 Cloud Functions 或 Cloud 运行)

身份验证

直接到 PubSub 或中间层,情况是一样的:请求者(webhook)需要经过身份验证和授权才能访问 Google 云服务。

一种可能的坏做法是设置 allUsers 授权访问您的资源。这是一个带有 PubSub 主题的示例

不要那样做。即使您通过定义模式(并因此拒绝所有不符合该模式的消息)来提高“您的”进程安全性,公开且未经身份验证地在野外互联网上访问资源也是犯罪行为!

在 webhook 上下文中(我公司以前有过这种情况)我建议您使用静态身份验证(长期身份验证 header;而不是短暂的 (1h) 作为 Google OAuth2 令牌);例如 API 键。它并不完美,因为万一 API 密钥泄漏,坏人将能够长时间使用此漏洞(只要你有 API 密钥就轮换!),但它更安全总比没有好!

我写了一个pretty old article on this use case (with ESPv2 and Cloud Run),但是原理和配置在API网关上几乎是一样的,一个Google云管理服务。在本文中,我为 Cloud 运行、Cloud Functions 和 App Engine 创建了一个代理,但您可以通过设置正确的目标 URL.

来使用 PubSub 做同样的事情