事件模式
更新时间:2025-08-21
概述
事件模式是用来事件总线用来过滤相关事件。事件总线EventBridge通过事件模式过滤事件并将事件路由到事件目标。一期暂只支持指定值匹配,二期支持前缀匹配、包含匹配、后缀匹配、除外匹配和数值匹配等事件模式。
注意事项
- 事件模式是逐个字符精确匹配的 ,需注意大小写,匹配过程中不会对字符串进行任何标准化的操作。
- 要匹配的值遵循JSON规则:用引号引起来的字符串、数字以及不带引号的关键字true、false和null。
- 事件模式匹配中各个Key支持AND语义,Key的Value值支持OR的语义。
指定值匹配
您可以指定某个字段的值进行匹配。例如,以下示例事件模式只匹配source是百度云服务器BCC,事件名称为cluster_resume_failed的事件。下面介绍事件从事件源发出经过事件模式过滤的过程。
- 从事件源接收的事件
事件1
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
事件2
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
- 事件模式
Plain Text
1{
2 "source":["BCE_BCC"],
3 "type":["cluster_resume_failed"]
4 }
- 模式过滤后的事件:
Plain Text
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
前缀匹配
您可以指定某个字段的值的前缀进行匹配。例如,以下示例事件模式只匹配type是cluster_开头的事件,下面介绍事件从事件源发出经过事件模式过滤的过程。
- 从事件源接收的事件
事件1
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
事件2
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
- 事件模式
Plain Text
1`{
2 "type":[
3 {
4 "prefix":"cluster_"
5 }
6 ]
7 }
- 模式过滤后的事件:
Plain Text
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
后缀匹配
您可以指定某个字段的值的前缀进行匹配。例如,以下示例事件模式只匹配type是_failed结尾的事件,下面介绍事件从事件源发出经过事件模式过滤的过程。
- 从事件源接收的事件
事件1
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
事件2
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
- 事件模式
Plain Text
1{
2 "type":[
3 {
4 "suffix":"_failed"
5 }
6 ]
7 }
- 模式过滤后的事件:
Plain Text
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
包含匹配
您可以指定某个字段包含特定字段值进行匹配。事件模式只匹配type中包含Device的事件,下面介绍事件从事件源发出经过事件模式过滤的过程。
- 从事件源接收的事件
事件1
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
事件2
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
- 事件模式
Plain Text
1{
2 "type":[
3 {
4 "contains":"Device"
5 }
6 ]
7 }
- 模式过滤后的事件:
Plain Text
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
除外匹配
您可以指定某个字段除了提供的值之外的任何值进行匹配。例如匹配level除了CRITICAL之外的事件,下表介绍示例事件从事件源发出经过事件模式过滤的过程。
- 从事件源接收的事件
事件1
1{
2 "data": {
3 "advice": "建议处理方案",
4 "info": "异常信息"
5 },
6 "level": "WARNING",
7 "subject": "*****",
8 "source": "BCE_BCC",
9 "type": "cluster_resume_failed",
10 "accountId": "*****",
11 "eventBusId": "eb-8a33f060",
12 "eventBusName": "default",
13 "eventAlias": "集群恢复服务失败",
14 "specversion": "1.0",
15 "id": "*****",
16 "time": "2020-11-19T21:04:41+08:00",
17 "region": "bj",
18 "eventAliasEn": "CLUSTER_RESUME_FAILED"
19}
事件2
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
- 事件模式
Plain Text
1{
2 "level":[
3 {
4 "anything-but":"CRITICAL"
5 }
6 ]
7 }
- 模式过滤后的事件:
Plain Text
1{
2 "data": {
3 "info": "系统出现异常",
4 "advice": "请联系管理员"
5 },
6 "id": "*****",
7 "source": "BCE_BCC",
8 "specversion": "1.0",
9 "type": "RepairDeviceFault",
10 "subject": "*****",
11 "time": "2020-11-19T21:04:41+08:00",
12 "level": "CRITICAL",
13 "accountId": "*****",
14 "eventBusId": "eb-8a33f060",
15 "eventBusName": "default",
16 "eventAlias": "设备错误",
17 "eventAliasEn": "DeviceFault",
18 "region": "bj",
19 "recvTimestamp": "2020-11-19T21:04:41+08:00"
20}
组合使用
以上各种模式匹配可一起组合使用,如匹配tpye前缀cluster_或后缀是_failed,且level不是CRITICAL的事件,事件模式结构如下:
Plain Text
1{
2 "type":[
3 {
4 "prefix":"cluster_"
5 },
6 {
7 "suffix":"_failed"
8 }
9 ],
10 "level":[
11 {
12 "anything-but":"CRITICAL"
13 }
14 ]
15 }