路由到HTTP端点地址

更新时间:
复制 MD 格式

您可以通过事件规则过滤事件,将事件路由到HTTP端点地址。本文以自定义事件为例介绍将事件路由到HTTP端点地址的前提条件、操作步骤和结果验证。

前提条件

开通事件总线EventBridge并授权

步骤一:添加自定义事件源

  1. 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线。
  2. 在顶部菜单栏,选择地域,在事件总线页面,单击目标自定义事件总线名称。
  3. 在左侧导航栏,单击事件源,然后单击添加事件源。
  4. 在添加自定义事件源面板,输入名称和描述,事件提供方选择自定义应用,然后单击确认。

步骤二:创建事件规则

重要

目标服务和事件规则必须处于同一地域。

  1. 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线。
  2. 在顶部菜单栏,选择地域,在事件总线页面,单击目标总线名称。
  3. 在左侧导航栏,单击事件规则,然后单击创建规则。

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

    1. 在配置基本信息配置向导,在名称文本框输入规则名称,在描述文本框输入规则的描述,然后单击下一步。

    2. 在配置事件模式配置向导,事件源类型选择自定义事件源,事件源选择步骤一:添加自定义事件源中添加的自定义事件源,在模式内容代码框输入事件模式,然后单击下一步。

      如需了解更多信息,请参见事件模式。

    3. 在配置事件目标配置向导,配置事件目标,然后单击创建。

      说明

      1个事件规则最多可以添加5个目标。

      • 服务类型:选择HTTP。

      • URL:输入URL地址。

      • Body:单击完整事件。

        如需了解更多信息,请参见事件内容转换。

      • 网络类型:选择网络类型。

        网络类型支持以下类型:

        • 公网

        • 专有网络:需同时选择已创建的VPC、VSwitch和安全组。

          重要

          安全组需要支持vSwitch所在的网段。

      • Token:您可以根据Token来校验事件总线EventBridge请求的合法性,其中Token作为HTTP Header传输,Header Key为x-eventbridge-signature-token。单击显示高级选项显示该参数。

步骤三:发布事件

  1. 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线。
  2. 在顶部菜单栏,选择地域。
  3. 在事件总线页面,找到目标总线,在其右侧操作列单击发布事件。

    说明

    仅自定义事件总线支持通过控制台发布事件。

  4. 在发布事件至自定义事件总线面板,自定义事件源下拉列表选择已创建的自定义事件源,在事件体代码框输入事件内容,然后单击确认。

    事件包含的参数规范,请参见事件概述。

结果验证

您可以通过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";
    }
}