路由到HTTP端點地址

更新時間:
Copy as MD

您可以通過事件規則過濾事件,將事件路由到HTTP端點地址。本文以自訂事件為例介紹將事件路由到HTTP端點地址的前提條件、操作步驟和結果驗證。

前提條件

開通事件匯流排EventBridge並授權

步驟一:添加自訂事件來源

  1. 登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排
  2. 在頂部功能表列,選擇地區,在事件匯流排頁面,單擊目標自訂事件匯流排名稱。
  3. 在左側導覽列,單擊事件來源,然後單擊添加事件來源
  4. 添加自定义事件源面板,輸入名称描述事件提供方選擇自訂應用,然後單擊确认

步驟二:建立事件規則

重要

目標服務和事件規則必須處於同一地區。

  1. 登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排
  2. 在頂部功能表列,選擇地區,在事件匯流排頁面,單擊目標匯流排名稱。
  3. 在左側導覽列,單擊事件规则,然後單擊创建规则

  4. 创建规则頁面,完成以下操作。

    1. 配置基本信息設定精靈,在名称文字框輸入規則名稱,在描述文字框輸入規則的描述,然後單擊下一步

    2. 配置事件模式設定精靈,事件源类型選擇自定义事件源事件源選擇步驟一:添加自訂事件來源中添加的自訂事件來源,在模式内容代碼框輸入事件模式,然後單擊下一步

      如需瞭解更多資訊,請參見事件模式

    3. 配置事件目标設定精靈,配置事件目標,然後單擊创建

      說明

      1個事件規則最多可以添加5個目標。

      • 服务类型:選擇HTTP

      • URL:輸入URL地址。

      • Body:單擊完整事件

        如需瞭解更多資訊,請參見事件內容轉換

      • 网络类型:選擇網路類型。

        網路類型支援以下類型:

        • 公网

        • 专有网络:需同時選擇已建立的VPCVSwitch安全组

          重要

          安全性群組需要支援vSwitch所在的網段。

      • Token:您可以根據Token來校正事件匯流排EventBridge請求的合法性,其中Token作為HTTP Header傳輸,Header Keyx-eventbridge-signature-token。單擊显示高级选项顯示該參數。

步驟三:發布事件

  1. 登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排
  2. 在頂部功能表列,選擇地區。
  3. 事件总线頁面,找到目標匯流排,在其右側操作列單擊发布事件

    說明

    僅自訂事件匯流排支援通過控制台發布事件。

  4. 发布事件至自定义事件总线 {name}面板,自定义事件源下拉式清單選擇已建立的自訂事件來源,在事件体代碼框輸入事件內容,然後單擊确认

    事件包含的參數規範,請參見事件概述

結果驗證

您可以通過HTTP網關接收事件查看事件內容。程式碼範例如下所示。

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@SpringBootApplication
@Slf4j
public class EventProcessingApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @PostMapping("/eventBridge/processEvent")
    @ResponseBody
    public String receiveMessage(@RequestBody String data) {
        log.info("receiveEvent");
        log.info(data);
        return "received";
    }
}