我們正在使用 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
提交
取消