如何从 Cloudflare 工作人员内部发布到 GCP PubSub 主题
Posted
技术标签:
【中文标题】如何从 Cloudflare 工作人员内部发布到 GCP PubSub 主题【英文标题】:How to publish to a GCP PubSub topic from inside a Cloudflare worker 【发布时间】:2020-01-21 01:20:00 【问题描述】:是否可以通过基本 HTTP 请求发布到 GCP PubSub 主题?我有一个 Cloudflare 工作人员,我想从中直接发布到某个主题。我最初尝试捆绑 NodeJS 模块,但由于服务器工作环境中不可用的依赖项(特别是 tls
),无法构建 webpack(通过 wrangler)。
PubSub API 似乎不支持 API 密钥,我终其一生都找不到使用服务帐户的方法使用 SDK。
【问题讨论】:
【参考方案1】:有点。有publish method that uses REST,但需要OAuth2.0授权。我不确定您是否会遇到与使用 NodeJS 客户端库相同的问题,但如果是这样,您将不得不使用公开 HTTP 端点的中间服务(即 Cloud Functions/Compute Engine/App Engine) 可以为您进行身份验证。
有关使用 OAuth2.0 的更多信息,请在此处查看此链接:https://cloud.google.com/pubsub/docs/authentication#user-accounts
【讨论】:
谢谢,亚历克斯。您知道它是否需要您不断刷新令牌,或者我可以创建一个永久 OAuth 令牌以无限期使用吗?我宁愿不创建中间 Web 服务,因为那样会违背让主题开始的目的。 AWS 的 SNS 似乎允许您签署请求并通过 HTTP 发出请求。 PubSub 没有类似的东西吗? 我相信所有的访问令牌都有一个过期日期,因此您需要通过刷新令牌检索新的访问令牌。要回答您的其他问题,不幸的是,唯一受支持的其他方法是使用您已经尝试过的服务帐户进行身份验证。 为了进一步澄清,我们确实有一个较旧的基于 HTTP 的客户端库,它使用 c discovery docs 发出请求,但这仍然取决于google-auth-library
,它很可能仍然无法工作,因为它需要 TLS。我认为 OAauth2 方式是与 Cloudflare Workers 一起使用的唯一方式。您还可以考虑用 Cloud Functions 替换 Cloudflare Workers(它提供类似的无服务器按执行付费环境)以上是关于如何从 Cloudflare 工作人员内部发布到 GCP PubSub 主题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cloudflare Workers 中不丢失 301 https 重定向的引用值
从 http 请求到 Cloudflare 托管网站的 403
如何从代码在 Grafana 中配置 Cloudflare 应用程序?