创建事件订阅
事件订阅将事件源、事件通道和事件目标绑定在一起,通过事件规则将事件源发出的事件路由到事件目标。
一个订阅最多关联五个事件目标。
前提条件
操作步骤
- 登录事件网格控制台。
- 在左侧导航栏选择“事件订阅”,进入“事件订阅”页面。
- 单击“创建事件订阅”,进入订阅详情页。
- 单击订阅名称旁的,弹出“修改订阅”弹窗。
- 输入订阅名称和描述信息,单击“确定”,完成订阅名称和描述信息输入。
- 企业用户请选择“企业项目”,单击“查看企业项目”可查看企业项目清单。
图1 选择企业项目
- 配置事件源。
- 单击“事件源”,如图2所示,弹出“事件源”对话框。
- 选择事件源提供方。
- 华为云:华为云服务事件源作为事件源提供方。
- 自定义:您自定义的事件源作为事件源提供方。
- 设置事件源参数。
当提供方为“华为云”时,设置如表1所示参数。
表1 云服务事件源参数说明 参数名称
说明
事件源
选择云服务事件源。
事件类型(可选)
选择事件网格预定义的事件类型。
过滤规则
输入事件过滤规则。
事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。如果需要了解更多过滤规则的信息,请参考过滤规则参数说明和过滤规则示例。
图3 云服务事件源配置参数
如果“事件源”选择“OBS应用事件源”,请参考表2。
表2 OBS应用事件源参数说明 参数名称
说明
事件源
选择事件源。
桶
选择OBS桶。
事件类型
指定事件类型进行过滤。
对象名前缀
输入过滤前缀。
对象名后缀
输入过滤后缀。
对象名编码
开启后OBS会对事件的对象名进行编码。
过滤规则
输入事件过滤规则。
事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。如果需要了解更多过滤规则的信息,请参考过滤规则参数说明和过滤规则示例。
如果“事件源”选择“OBS应用事件源”,需用户的华为云账号添加“Tenant Administrator”权限,如何授权请参见依赖角色的授权方法。
当提供方为“自定义”时,设置如表3所示参数。表3 自定义事件源参数说明 参数名称
说明
通道配置
配置类型
支持以下两种类型:
- 选择:选择一个已创建的自定义事件通道。
- 新建:创建一个新的自定义事件通道。
通道
- “配置类型”为“选择”时,在下拉列表中选择一个已创建的自定义事件通道,例如:channel。
- “配置类型”为“新建”时,输入事件通道名称。
描述(可选)
仅在“配置类型”为“新建”时,需要设置此参数。
输入自定义事件通道的描述信息。
事件源配置
配置类型
支持以下两种类型:
- 选择:选择一个已创建的自定义事件源。
- 新建:创建一个新的自定义事件源。
事件源
- “配置类型”为“选择”时,在下拉列表中选择一个已关联自定义事件通道(即“通道配置”中选择的自定义通道,例如:channel)的自定义事件源。
- “配置类型”为“新建”时,输入自定义事件源名称。
描述
仅在“配置类型”为“新建”时,需要设置此参数。
输入自定义事件源的描述信息。
过滤规则
输入事件过滤规则。
事件源产生的事件与过滤规则进行匹配,匹配成功后事件才会被路由到与过滤规则关联的事件目标。如果需要了解更多过滤规则的信息,请参考过滤规则参数说明和过滤规则示例。
图4 自定义事件源配置参数
- 单击“确定”,完成事件源的配置。
- 配置事件目标。
一个订阅最多关联五个事件目标。
- 单击“事件目标”,如图5所示,弹出“事件目标”对话框。
- 选择事件目标提供方。
- 华为云:华为云服务作为事件目标提供方。
- 自定义:您自定义的事件目标作为事件源提供方。
- 设置事件目标参数。
当提供方为“华为云”时,设置如下参数。
- 事件目标:选择事件目标。
当事件目标配置为“FunctionGraph(函数计算)”时:
- 函数:选择需要触发的函数。如果还未创建函数,请先创建函数。
- 版本/别名:配置版本/别名,当选择其一时,则另外一个参数无需配置。
- 版本:选择函数的版本。当前默认选择“latest”。
- 别名:选择函数的别名。
- 执行方式:选择异步或同步。
请求函数调用的方式,默认采用异步执行。
异步:异步执行指的是函数调用请求发送后不等待函数调用结果。
同步:同步执行指的是函数调用请求需要明确等到响应结果,也就是说这样的请求必须得调用到用户的函数,并且等到调用完成才返回。
- 委托:选择委托。如无委托,可单击旁边的“创建委托”进行创建,将会创建名为“EG_TARGET_AGENCY”委托。
- 只会查询出被委托方是事件网格服务的委托。
- 请确保您选择的委托已被授权的权限包含functiongraph:function:invoke*。
当事件目标选择“分布式消息服务 Kafka版”时:
- 目标连接:选择目标连接,需要提前创建分布式消息服务Kafka版目标连接。
- Topic:选择消息Topic,需要提前创建。
- 启用消息Key:是否启用消息key。
- 类型:消息Key的转换类型。支持以下两种转换类型:
- 变量:从CloudEvents标准事件中获取变量值,将变量值作为Key值。
- 常量:将指定的常量作为key值。若选择常量,所有消息将发送至同一分区。
如果需要了解更多转换类型的信息,请参考事件内容转换。
当事件目标选择“事件网格EG”时:
同一个事件在EG通道内传递的次数不能超过三次。
- 目标类型:选择同账号或跨账号。具体参数配置如下表所示:
表4 目标类型参数配置说明 同账号
跨账号
说明
区域
区域
华北-北京四、上海一、上海二、华南广州。
说明:暂不支持选择其他区域。
项目ID
项目ID
请输入目标通道的项目ID。
说明:项目ID必须与目标通道所属项目ID保持一致,否则会导致事件无法发布至目标通道。
项目ID可以在对应账号的“我的凭证”中获取到。
通道
通道
请输入目标通道ID。
说明:同账号同区域时支持选择当前账号下的通道,跨账号时需要您输入通道ID。
同账号下是下拉列表选择通道,且不能选择同一通道和default通道。
跨账号输入ID时不能输入同一通道ID和default通道ID,否则事件不通。
如果当前通道没有关联订阅,发布到该通道的消息将无法消费,所以需要新增订阅,下游事件订阅的事件源和上游订阅的事件源名称保持一致,且下游的事件源必须是自定义事件源。
委托
委托
请选择委托。
说明:选择委托。如无委托,可单击旁边的“创建委托”进行创建,将会创建名为“EG_TARGET_AGENCY”委托。
只会查询出被委托方是事件网格服务的委托。
请确保您选择的委托被授权的权限包含eg:channels:putEvents。
规则配置:
- 类型:事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型:
- 透传:事件网格不对事件进行转换,将CloudEvents标准事件直接路由到事件目标。
如果需要了解更多转换类型的信息,请参考事件内容转换。
当事件目标选择“消息通知SMN”时:
- 主题:选择消息通知主题,需要提前创建。
- 委托:选择委托。如无委托,请先创建委托,将会创建名为“EG_SMN_PUBLISHER_AGENCY”委托。
- 只会查询出被委托方是事件网格服务的委托。
- 请确保您选择的委托已被授权的权限包含“smn:topic:publish”。
- 消息标题配置:“类型”配置为“常量”或“变量”。
- 类型:消息标题的类型。支持以下两种类型。
- 常量:将指定的常量作为消息标题。若选择常量,所有消息的消息标题都是相同的。
- 变量:从CloudEvents标准事件中获取变量值,将变量值代入模板中作为消息标题,如果生成的消息标题超长则会截取前512个字符。
消息标题配置非必填项,可选择填写。
规则配置:
- 类型:事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型。支持以下三种转换类型:
- 透传:事件网格不对事件进行转换,将CloudEvents标准事件直接路由到事件目标。
- 变量:从CloudEvents标准事件中获取变量值,将变量值路由到事件目标。
- 常量:事件只能触发事件目标,但是不会传送事件内容到事件目标,事件网格将您设置的常量路由到事件目标。
如果需要了解更多转换类型的信息,请参考事件内容转换。
图6 华为云事件目标配置参数
当提供方为“自定义”时,设置如下参数。- URL配置:输入https://开头的事件目标的URL,必须是POST接口方式。
表5 事件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":""
- 目标连接:选择已创建好的目标连接或默认连接,了解更多详情请参考目标连接。
- 请求头参数:
- 请输入请求头。
- 请输入值。
- 选择是否加密
图7 请求头参数
- 针对HTTPS类型的自定义事件,对事件目标端增加授权配置,以提高安全性。
- 当请求头和值校验不通过时,是否加密选项置灰无法选择。
- key(请求头):由大小写英文字母和中划线组成,且必须以大小写字母开头和结尾,最大长度256个字符。
- value:由大小写英文字符、中划线、下划线、空格和特殊字符“~!@#$%^&*()=+|[{}];:'",<.>/?”组成,最大长度1024个字符。
- 类型:事件网格将CloudEvents标准事件转换成事件目标可以接受的事件类型。支持以下三种转换类型:
- 透传:事件网格不对事件进行转换,将CloudEvents标准事件直接路由到事件目标。
- 变量:从CloudEvents标准事件中获取变量值,将变量值路由到事件目标。
- 常量:事件只能触发事件目标,但是不会传送事件内容到事件目标,事件网格将您设置的常量路由到事件目标。
如果需要了解更多转换类型的信息,请参考事件内容转换。
- 启用死信队列:默认不启用。启用死信队列后EG会把处理失败的事件发送到配置的队列中,若不启用则处理失败的事件将被丢弃。了解更多详情请参考死信队列。
图8 自定义事件目标配置参数
- 事件目标:选择事件目标。
- 单击“确定”,完成事件目标的配置。
- 单击“保存”,完成订阅的配置。
订阅创建成功后,订阅状态默认为“启用”。