我们正在使用 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 通知进行转换。
呼啦一阵风
TA贡献1802条经验 获得超6个赞
不,这是不可能的。Pub/Sub 主题没有相应的可用作 webhook 的 HTTP 端点。如果要从最终用户应用程序触发 Pub/Sub 主题,则需要在它们之间使用前端服务器:
添加回答
举报
0/150
提交
取消