为了账号安全,请及时绑定邮箱和手机立即绑定

webhook 可以直接针对 GCP PubSub 吗?

webhook 可以直接针对 GCP PubSub 吗?

qq_遁去的一_1 2023-06-06 16:40:05
我们正在使用 webhooks 来监听 Jira 问题事件。每当票证上发生活动时,JIRA API 都会通知在 Google Cloud Function 中运行的 HTTP 端点。在此 Cloud Functions 中,我们只是通过以下方式将请求原封不动地转发到 Pub/Sub:def forward_to_pubsub(request):    publisher = pubsub_v1.PublisherClient()    topic_path = publisher.topic_path(project_id, topic_id)    # Request body contains user, project, issue basically everything we care about    jira_body = request.json    publisher.publish(topic_path, data=json.dumps(jira_body).encode('utf-8'))这似乎是一个不必要的跳跃。有没有办法将 Pub/Sub 配置为 HTTP webhook 的目标?无法从文档中找出任何一种方式。
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

实际上可以使用 REST API 通过 HTTP 直接将消息发布到 Pub/Sub 主题。

要发布消息,请发送如下 POST 请求:

POST  https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish
Authorization: Bearer $(gcloud auth application-default print-access-token)

替换以下内容:

  • PROJECT_ID:主题项目的项目ID

  • TOPIC_ID:主题ID

在请求正文中指定以下字段:

{

"messages": [

  {

    "attributes": {

      "KEY": "VALUE",

      ...

    },

    "data": MESSAGE_DATA,

  }

]

}

替换以下内容:

  • KEY:消息属性的键

  • VALUE:消息属性的键的值

  • MESSAGE_DATA:带有消息数据的 base64 编码字符串

如果请求成功,响应是一个带有消息 ID 的 JSON 对象。以下示例是带有消息 ID 的响应:

{  "messageIds": [  
  "19916711285"
  ]
}

发布消息后,Pub/Sub 服务会将消息 ID 返回给发布者。

还有一个REST API 参考和服务端点概述以及使用 Google REST API 时的常见说明,这应该会有所帮助。

请注意,发布请求必须确认 projects.topic.publish方法规范,因此仍需要从 JIRA webhook 通知进行转换。


查看完整回答
反对 回复 2023-06-06
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

不,这是不可能的。Pub/Sub 主题没有相应的可用作 webhook 的 HTTP 端点。如果要从最终用户应用程序触发 Pub/Sub 主题,则需要在它们之间使用前端服务器:

//img1.sycdn.imooc.com/647ef112000188fb06450472.jpg

查看完整回答
反对 回复 2023-06-06
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信