自定义事件源API网关

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

前提条件

步骤一:创建后端服务

  1. 登录API网关控制台,在左侧导航栏选择API 管理 > 后端服务

  2. 后端服务列表页面,单击右上角的创建后端服务,在弹出的对话框中填写后端服务名称,类型选择事件总线 EventBridge,然后单击确定

    12Kka09sbi

  3. 在后端服务列表中找到您刚创建的后端服务,在右侧的操作栏中单击配置及关联的API

  4. 后端服务定义页面,单击线上页签,然后在基本信息区域单击创建

  5. 定义后端服务页面,区域选择创建好的自定义事件总线所在的地域,事件总线选择创建好的自定义事件总线名称,设置事件源名称和描述,单击发布

步骤二:创建API分组

  1. 在左侧导航栏,选择API 管理 > 分组管理

  2. 分组列表页面,单击右上角的创建分组,选择实例,设置分组名称,然后单击确定

    SYIFxEn5sG

    重要

    网关的分组需要和前提条件中创建好的自定义事件总线处于同一地域。

步骤三:创建API并对其授权

  1. 分组列表页面找到步骤二中创建成功的API分组,单击右侧操作列的API管理

  2. API列表页面,单击创建API

    1. 基本信息配置向导页面,设置以下信息,然后单击下一步

      bmVHlylxnB

    2. 定义API请求配置向导页面,配置以下信息,然后单击下一步

      EVRUdrh91I

      说明

      本环节是定义事件总线如何请求您的API,需要确定的内容包括请求类型、协议、请求Path、HTTP Method、入参请求模式和入参定义。

    3. 定义API后端服务配置向导页面,选择后端服务类型后端服务,然后单击下一步

      aURupKIZw0

    4. (可选)定义返回结果配置向导页面,设置返回结果示例和失败返回结果示例,用于生成API帮助文档,然后单击创建

  3. API创建完成后,单击其右侧操作列的发布,将配置好的API发布至线上环境。

  4. API列表页面,单击目标API操作列的image图标,然后单击授权

  5. 授权面板,设置授权有效时间并添加需要授权的应用,然后单击确定

    677dXHeo82

步骤五:调试API

  1. API列表页面,找到步骤三:创建API并对其授权中创建的API,在其右侧操作列,单击调试

  2. 将调试环境选择为线上验证方式选择为使用AppCode,设置请求参数,单击发送请求

    IpYBZq1PhH

查看事件详情

  1. 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线
  2. 事件总线页面,单击目标自定义事件总线名称。
  3. 在左侧导航栏,单击事件追踪,设置查询方式为按事件范围查询或者按事件ID查询,单击查询

  4. 单击目标事件ID操作列的事件详情,即可查看事件的具体内容。

    查询到的事件详情如下所示:

    {
        "datacontenttype": "application/json",
        "aliyunaccountid": "1431999136******",
        "data": {
            "headers": {
                "Authorization": "APPCODE 0624849af6ab4020a272fe9f7b******",
                "Proxy-Uid": "X-Ca-e605e437-b65d-4e52-9f8c-515c55******",
                "X-Ca-Stage": "RELEASE",
                "User-Agent": "Apache-HttpClient/4.5.6 (Java/1.8.0_172)",
                "Accept-Encoding": "gzip,deflate",
                "Content-Type": "text/html"
            },
            "path": "/test/eb/1",
            "pathParameters": {},
            "method": "GET",
            "queryParameters": {}
            "body": ""
        },
        "aliyunoriginalaccountid": "143199913******",
        "source": "time-source-ad2a0405-9a2a-4f86-87f1-c0ef89******",
        "type": "eventbridge:Events:ApiGateway",
        "aliyunpublishtime": "2024-11-14T07:11:33.287Z",
        "specversion": "1.0",
        "aliyuneventbusname": "ad2a0405-9a2a-4f86-87f1-c0ef89******",
        "id": "324213ab-cae5-4049-89a4-560ead******",
        "time": "2024-11-14T07:11:33.000Z",
        "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的内容。