更新时间:2026-03-26 GMT+08:00
分享

创建事件订阅

事件订阅将事件源、事件通道和事件目标绑定在一起,通过事件规则将事件源发出的事件路由到事件目标。

约束与限制

  • 一个订阅最多关联五个事件目标。
  • 事件目标投递失败时,默认支持重试16次。
  • 同一个事件在EG通道内传递的次数不能超过三次。
  • 不支持跨账号的能力使用事件订阅功能。

前提条件

  • (可选)已创建自定义事件源。
  • 已设置事件目标。
  • 已创建企业项目,如何创建请参见管理项目和企业项目。
    • 非企业用户和企业项目只有“default”时,该选项不显示。
    • 拥有多个企业项目时,默认选择“default”。

操作步骤

  1. 登录事件网格控制台。
  2. 在左侧导航栏选择“事件订阅”,进入“事件订阅”页面。
  3. 单击“创建事件订阅”,进入订阅详情页。
  4. 单击订阅名称旁的,弹出“修改订阅”弹窗。
  5. 输入订阅名称和描述信息,单击“确定”,完成订阅名称和描述信息输入。
  6. 企业用户请选择“企业项目”,单击“查看企业项目”可查看企业项目清单。
  7. 配置事件源。

    1. 单击“事件源”,如图1所示,弹出“事件源”对话框。
      图1 配置事件源
    2. 选择事件源提供方。
      • 云服务:云服务事件源作为事件源提供方。
      • 自定义:您自定义的事件源作为事件源提供方。
    3. 设置事件源参数。
      当提供方为“云服务”时,设置如表1所示参数。
      表1 云服务事件源参数说明

      参数名称

      说明

      事件源

      选择云服务事件源。

      事件类型(可选)

      选择事件网格预定义的事件类型。

      过滤规则

      输入事件过滤规则。

      事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。如果需要了解更多过滤规则的信息,请参考过滤规则参数说明和过滤规则示例。

      图2 云服务事件源配置参数

      如果“事件源”选择“OBS应用事件源”,请参考表2。同时,需用户的华为云账号添加“Tenant Administrator”权限,如何授权请参见依赖角色的授权方法。

      表2 OBS应用事件源参数说明

      参数名称

      说明

      事件源

      选择事件源。

      桶

      选择OBS桶。

      事件类型

      指定事件类型进行过滤。

      对象名前缀

      输入过滤前缀。

      对象名后缀

      输入过滤后缀。

      对象名编码

      开启后OBS会对事件的对象名进行编码。

      过滤规则

      输入事件过滤规则。

      事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。如果需要了解更多过滤规则的信息,请参考过滤规则参数说明和过滤规则示例。

      当提供方为“自定义”时,设置如表3所示参数。

      表3 自定义事件源参数说明

      参数名称

      说明

      通道

      在下拉列表中选择一个已创建的自定义事件通道,例如:channel。

      事件源

      输入或选择一个已关联自定义事件通道(即“通道配置”中选择的自定义通道,例如:channel)的自定义事件源。

      过滤规则

      输入事件过滤规则。

      事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。如果需要了解更多过滤规则的信息,请参考过滤规则参数说明和过滤规则示例。

      图3 自定义事件源配置参数
    4. 单击“确定”,完成事件源的配置。

  8. 配置事件目标。

    1. 单击“事件目标”,如图4所示,弹出“事件目标”对话框。
      图4 配置事件目标
    2. 选择事件目标提供方。
      • 云服务:云服务作为事件目标提供方。
      • 自定义:您自定义的事件目标作为事件源提供方。
    3. 设置事件目标参数。
      当提供方为“云服务”时,设置如下参数。
      • 事件目标:选择事件目标。

        当事件目标配置为“FunctionGraph(函数计算)”时:

        • 函数:选择需要触发的函数。如果还未创建函数,请先创建函数。
        • 版本/别名:配置版本/别名,当选择其一时,则另外一个参数无需配置。
        • 版本:选择函数的版本。当前默认选择“latest”。
        • 别名:选择函数的别名。
        • 执行方式:选择异步或同步。

          请求函数调用的方式,默认采用异步执行。

          异步:异步执行指的是函数调用请求发送后不等待函数调用结果。

          同步:同步执行指的是函数调用请求需要明确等到响应结果,也就是说这样的请求必须得调用到用户的函数,并且等到调用完成才返回。

        • 委托:选择委托。如无委托,可单击旁边的“创建委托”进行创建,将会创建名为“EG_TARGET_AGENCY”委托。
          1. 只会查询出被委托方是事件网格服务的委托。
          2. 请确保您选择的委托已被授权的权限包含functiongraph:function:invoke*。

        当事件目标选择“分布式消息服务 Kafka版”时:

        • 目标连接:选择目标连接,需要提前创建目标连接。
        • Topic:选择消息Topic,需要提前创建。
        • 启用消息Key:是否启用消息key。
        • 类型:消息Key的转换类型。支持以下两种转换类型:
          • 变量:从CloudEvents标准事件中获取变量值,将变量值作为Key值。
          • 常量:将指定的常量作为key值。若选择常量,所有消息将发送至同一分区。

          如果需要了解更多转换类型的信息,请参考事件内容转换。

        当事件目标选择“云服务接口”时:

        • 云服务:选择云服务。
        • 接口:选择云服务接口,并配置对应接口信息。
        • 委托:选择已经创建的委托。

        当事件目标选择“消息通知SMN”时:

        • 主题:选择消息通知主题,需要提前创建。
        • 委托:选择委托。如无委托,请先创建委托,将会创建名为“EG_SMN_PUBLISHER_AGENCY”的委托。
          • 只会查询出被委托方是事件网格服务的委托。
          • 请确保您选择的委托已被授权的权限包含“smn:topic:publish”。
        • 消息标题配置:“类型”配置为“常量”或“变量”。
        • 类型:消息标题的类型。支持以下两种类型。
          • 常量:将指定的常量作为消息标题。若选择常量,所有消息的消息标题都是相同的。
          • 变量:从CloudEvents标准事件中获取变量值,将变量值代入模板中作为消息标题,如果生成的消息标题超长则会截取前512个字符。

            消息标题配置非必填项,可选择填写。

        规则配置:

      • 类型:事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型。支持以下三种转换类型:
        • 透传:事件网格不对事件进行转换,将CloudEvents标准事件直接路由到事件目标。
        • 变量:从CloudEvents标准事件中获取变量值,将变量值路由到事件目标。
        • 常量:事件只会触发事件目标,但是不会传送事件内容到事件目标,事件网格将您设置的常量路由到事件目标。

        如果需要了解更多转换类型的信息,请参考事件内容转换。

      图5 云服务事件目标配置参数
      当提供方为“自定义”时,设置如下参数。
      • URL配置:请输入http://开头或者https://开头的事件目标的URL,必须是POST接口方式。

        事件推送到自定义事件目标的超时时间默认为9秒,超过9秒则推送失败。

        HTTP协议存在较高安全风险,可能导致数据被窃听或篡改。为了确保数据安全,强烈建议使用HTTPS协议。若您必须使用HTTP,请确保自定义事件中不包含任何敏感信息,所有相关风险需自行承担。
        表4 事件Body参数

        参数

        是否必选

        参数类型

        描述

        datacontenttype

        否

        String

        数据内容类型

        data

        是

        Array of Data objects

        数据

        subject

        否

        String

        主题

        specversion

        否

        String

        规格版本

        id

        是

        String

        Id

        source

        是

        String

        事件源

        time

        是

        String

        时间

        type

        是

        String

        事件类型

        ttl

        是

        String

        超时时间

        dataschema

        否

        String

        数据结构

        事件Body体示例如下(以“OBS应用事件源”为例):
        "datacontenttype":"application/json",
        "data":
        {
          "obs":{
                    "bucket":{
                                    "bucket":"bucket-input-my",
                                    "name":"bucket-input-my",
                                    "arn":"",
                                    "ownerIdentity":{"ID":"f9e40463cxxxxxxxx9efd3a7ec854e"}
                                  },
                    "Version":"1.0",
                    "configurationId":"a6b0bcf8-8874-4d8b-84f5-f9068527930f",
                    "object":{
                                    "versionId":"G00101928EE6072DFFFFD28824BB4AB8null",
                                    "oldpsxpth":"",
                                  "size":10,
                                    "eTag":"c9b20f7d442e65ede148e006dfe1308c",
                                    "key":"\xe4\xba\x8b\xe4\xbb\xxx\xxx\xxx\xxx\xxx\xxx\x85\xe6\xb5\x8b\xe8\xaf\x951015-2.txt",
                                    "sequencer":"1"
                                  }
                    },
          "eventVersion":"3.0",
          "responseElements":{
                                    "x-obs-id-2":"",
                                    "x-obs-request-id":"3f905af2683e6ed7dbaec881b66390ab",
                                    "x-amz-request-id":"",
                                    "x-amz-id-2":""
                                  },
          "eventSource":"OBS",
          "eventTime":"2024-10-15T14:38:12.781Z",
          "requestParameters":{
                                    "sourceIPAddress":"xx.xx.xx.xx"
                                  },
          "eventName":"ObjectCreated:Put",
          "eventRegion":"cn-north-4",
          "userIdentity":{
                                "ID":"f9e40463c23xxxxxxxxefd3a7ec854e"
                              }
        },
        "subject":"\xe4\xba\x8b\xe4\xbb\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xe6\xb5\x8b\xe8\xaf\x951015-2.txt",
        "specversion":"1.0",
        "id":"3f905af2683e6ed7dbaec881b66390ab",
        "source":"HC.OBS.DWR",
        "time":"2024-10-15T06:38:13.52240464Z",
        "type":"OBS:DWR:ObjectCreated:PUT",
        "ttl":"4000","dataschema":""
      • 目标连接:选择已创建好的目标连接或默认连接,了解更多详情请参考目标连接。
      • 请求头参数:
        • 请输入请求头。
        • 请输入值。
        • 选择是否加密
          图6 请求头参数
          • 针对HTTPS类型的自定义事件,对事件目标端增加授权配置,以提高安全性。
          • 当请求头和值校验不通过时,是否加密选项置灰无法选择。
          • key(请求头):由大小写英文字母和中划线组成,且必须以大小写字母开头和结尾,最大长度256个字符。
          • value:由大小写英文字符、中划线、下划线、空格和特殊字符“~!@#$%^&*()=+|[{}];:'",<.>/?”组成,最大长度1024个字符。
      • 类型:事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型。支持以下三种转换类型:
        • 透传:事件网格不对事件进行转换,将CloudEvents标准事件直接路由到事件目标。
        • 变量:从CloudEvents标准事件中获取变量值,将变量值路由到事件目标。
        • 常量:事件只能触发事件目标,但是不会传送事件内容到事件目标,事件网格将您设置的常量路由到事件目标。

        如果需要了解更多转换类型的信息,请参考事件内容转换。

      • 启用死信队列:默认不启用。启用死信队列后EG会把处理失败的事件发送到配置的队列中,若不启用则处理失败的事件将被丢弃。了解更多详情请参考死信队列。
      图7 自定义事件目标配置参数
    4. 单击“确定”,完成事件目标的配置。

  9. 单击“保存”,完成订阅的配置。

    订阅创建成功后,订阅状态默认为“启用”。

相关文档