本文介绍如何在事件总线EventBridge控制台添加HTTP/HTTPS 触发类型的自定义事件源。

背景信息

自定义事件源HTTP/HTTPS 触发创建完成后,会生成一个Webhook地址,此Webhook地址是用于接收HTTP请求的URL。当配置了Webhook的服务端发生事件变更时,通过此URL发送消息给事件总线EventBridge事件总线EventBridge收到URL消息后判断是否将消息转换为事件推送到事件目标。

前提条件

操作步骤

  1. 登录事件总线EventBridge控制台
  2. 在左侧导航栏,单击事件总线
  3. 在顶部菜单栏,选择地域。
  4. 事件总线页面,单击目标总线名称。
  5. 在左侧导航栏,单击事件源
  6. 事件源页面,单击添加事件源
  7. 添加自定义事件源面板,输入名称描述事件提供方选择HTTP/HTTPS 触发,配置以下参数,然后单击确认
    参数名称 参数说明
    请求类型 选择HTTPSHTTPHTTP&HTTPS
    请求方法 选择支持的HTTP请求方法。取值如下:
    • GET
    • POST
    • PUT
    • DELETE
    • HEAD
    • PATCH
    安全配置 选择安全配置的类型。取值如下:
    • 无需配置:无需进行安全配置,接收到的所有URL请求均转换为事件推送到事件总线EventBridge
    • IP网段:输入正确的IP地址或者IP网段。只有使用该IP地址或该IP网段内的IP地址访问的URL请求支持转换为事件推送到事件总线EventBridge,其余请求均会被过滤。
    • 安全域名:输入安全的域名信息。只有使用该域名访问的URL请求支持转换为事件推送到事件总线EventBridge,其余请求均会被过滤。
    IP网段 仅当参数安全配置选择为IP网段时,需配置此参数。参数说明,请参见参数安全配置
    说明 最多支持添加5个IP地址或IP网段。
    安全域名 仅当参数安全配置选择为安全域名时,需配置此参数。参数说明,请参见参数安全配置
    说明 最多支持添加5个安全域名。

事件示例

事件总线EventBridge将符合要求的HTTP请求转化为事件,其中HTTP请求的请求头和消息正文被置于事件data字段的headersbody

{
  "datacontenttype": "application/json",
  "aliyunaccountid": "175299981560****",
  "data": {
    "headers": {
      "Host": "175299981560****.eventbridge.cn-hangzhou.aliyuncs.com",
      "Accept-Encoding": "gzip, deflate, br",
      "accept": "*/*",
      "Content-Length": "538",
      "Content-Type": "application/json"
    },
    "path": "/webhook/putEvents",
    "body": {
      "infoId": 1,
      "ruleName": "Test",
      "state": "alerting",
      "message": "EventBridge test info.",
      "ruleId": "796014154722826****"
    },
    "httpMethod": "GET",
    "queryString": {}
  },
  "subject": "acs:eventbridge:cn-hangzhou:175299981560****:eventbus/EventBridgeDemoBus/eventsource/my.httpSource",
  "aliyunoriginalaccountid": "175299981560****",
  "source": "my.httpSource",
  "type": "eventbridge:Events:HTTPEvent",
  "aliyunpublishtime": "2022-03-03T03:33:14.097Z",
  "specversion": "1.0",
  "aliyuneventbusname": "EventBridgeDemoBus",
  "id": "ac0d574c-d862-4662-a87b-784e3d77****",
  "time": "2022-03-03T11:33:14.093+08:00",
  "aliyunregionid": "cn-hangzhou",
  "aliyunpublishaddr": "42.120.XX.XX"
}

CloudEvents规范中定义的参数解释,请参见事件概述

data字段包含的参数解释如下表所示。

参数 类型 示例值 描述
headers Map
{
    "Host":"175299981560****.eventbridge.cn-hangzhou.aliyuncs.com",
    "Accept-Encoding":"gzip, deflate, br",
    "accept":"*/*",
    "Content-Length":"538",
    "Content-Type":"application/json"
}
HTTP请求头。
path String /webhook/putEvents HTTP请求路径。
body String/Map
{
    "infoId":1,
    "ruleName":"Test",
    "state":"alerting",
    "message":"EventBridge test info.",
    "ruleId":"796014154722826****"
}
HTTP请求消息正文。如果HTTP请求的Content-Type字段取值为application/json,消息正文将按照JSON进行解析,否则按照普通字符串解析。
httpMethod String GET HTTP请求方法。
queryString Map HTTP请求的query参数去除token的内容。