本文介绍如何在事件总线EventBridge控制台添加API 网关类型的自定义事件源。

前提条件

步骤一:创建后端服务

  1. 登录API网关控制台,在左侧导航栏选择开放API > 后端服务
  2. 在界面右上角单击创建后端服务,在弹出的对话框中填写后端服务名称,类型选择事件总线 EventBridge,然后单击确定创建后端服务。
    自定义事件源API
  3. 在后端服务列表中找到您刚创建的后端服务,在右侧的操作栏中单击配置及关联的API
  4. 后端服务定义页面,单击线上页签,然后在基本信息区域单击创建
  5. 定义后端服务页面,区域选择创建好的自定义事件总线所在的地域,事件总线选择创建好的自定义事件总线名称,设置事件源名称和描述,单击发布
    基本信息

步骤二:创建API分组

  1. 登录API网关控制台,在左侧导航栏选择开放API > 分组管理
  2. 分组列表页面,单击右上角的创建分组,选择实例,设置分组名称,然后单击确定
    创建分组
    重要 网关的分组需要和前提条件中创建好的自定义事件总线处于同一地域。

步骤三:创建API

分组列表页面找到步骤二:创建API分组中创建好的API分组,单击右侧操作列的API管理,然后单击创建API
  1. 基本信息页签,配置以下参数,然后单击下一步
    基本信息
  2. 定义API请求页签,设置以下参数,然后单击下一步
    定义API请求
    说明 本环节是定义事件总线如何请求您的API,需要确定的内容包括请求类型、协议、请求Path、HTTP Method、入参请求模式、和入参定义。
  3. 定义API后端服务页签,设置后端服务信息,然后单击下一步
    后端服务信息
  4. (可选)在定义返回结果页签,设置返回结果示例和失败返回结果示例,用于生成API帮助文档,然后单击创建
  5. API创建完成后,单击其右侧操作列的发布,将配置好的API发布至线上环境。

步骤四:创建应用及对API授权

  1. API网关控制台的左侧导航栏,选择调用API > 应用管理
  2. 应用列表页面,单击右上角的创建APP,然后在创建应用对话框设置应用的名称和描述,单击确定
  3. 回到API列表页面,找到步骤三:创建API中创建的API,在其右侧操作列选择更多 > 授权
  4. 选择要授权的环境设置为线上,设置授权有效时间,搜索创建好的应用,单击添加,然后单击确定
    添加应用

步骤五:调试API

  1. API列表页面,找到步骤三:创建API中创建的API,在其右侧操作列,单击调试
  2. 将调试环境选择为线上验证方式选择为使用AppCode,设置请求参数,单击发送请求
    发送请求

查看事件详情

  1. 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线
  2. 事件总线页面,单击目标自定义事件总线名称。
  3. 在左侧导航栏,单击事件追踪,设置查询方式为按事件范围查询或者按事件ID查询,单击查询
    查询到的事件详情如下所示:
    {
        "datacontenttype": "application/json",
        "aliyunaccountid": "115964845466****",
        "data": {
            "headers": {
                "Authorization": "APPCODE b6e439f27045443ca58e9136ef20****",
                "X-Ca-Dashboard-Uid": "115964845466****",
                "X-Ca-Dashboard-Action": "DEBUG",
                "X-Ca-Stage": "RELEASE",
                "X-Ca-Dashboard-Role": "USER",
                "User-Agent": "Apache-HttpClient/4.5.6 (Java/1.8.0_172)",
                "Accept-Encoding": "gzip,deflate",
                "Content-Type": "text/html; charset=utf-8"
            },
            "path": "/test/eb/1",
            "pathParameters": {},
            "method": "GET",
            "queryParameters": {},
            "body": ""
        },
        "aliyunoriginalaccountid": "115964845466****",
        "source": "testAPI",
        "type": "eventbridge:Events:ApiGateway",
        "aliyunpublishtime": "2022-11-14T07:38:01.409Z",
        "specversion": "1.0",
        "aliyuneventbusname": "mybus",
        "id": "72db5348-61e8-404c-85be-cee24176****",
        "time": "2022-11-14T07:38:01Z",
        "aliyunregionid": "cn-hangzhou",
        "aliyunpublishaddr": "172.20.XX.XX"
    }

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

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

    参数 类型 示例值 描述
    headers Map
    {
        "Authorization": "APPCODE b6e439f27045443ca58e9136ef20****",
        "X-Ca-Dashboard-Uid": "115964845466****",
        "X-Ca-Dashboard-Action": "DEBUG",
        "X-Ca-Stage": "RELEASE",
        "X-Ca-Dashboard-Role": "USER",
        "User-Agent": "Apache-HttpClient/4.5.6 (Java/1.8.0_172)",
        "Accept-Encoding": "gzip,deflate",
        "Content-Type": "text/html; charset=utf-8"
    }
    HTTP请求头。
    path String /test/eb/1 HTTP请求路径。
    pathParameters Map 路径参数。
    body String/Map HTTP请求消息正文。如果HTTP请求的Content-Type字段取值为application/json,消息正文将按照JSON进行解析,否则按照普通字符串解析。
    method String GET HTTP请求方法。
    queryParameters Map HTTP请求的query参数去除token的内容。