本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中创建事件模式 EventBridge
要创建事件模式,您要指定希望事件模式匹配的事件字段。仅指定用于匹配的字段。
例如,以下事件模式示例仅提供三个字段的值:顶级字段"source"
和"detail-type"
,以及"detail"
对象"state"
字段内的字段。 EventBridge应用规则时会忽略事件中的所有其他字段。
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated"]
}
}
要使事件模式匹配事件,事件必须包含模式中列出的所有字段名。字段名必须还显示在具有相同嵌套结构的事件中。
当你编写事件模式来匹配事件时,你可以使用TestEventPattern
API或test-event-pattern
CLI命令来测试你的模式是否与正确的事件匹配。有关更多信息,请参阅TestEventPattern。
匹配事件值
在事件模式中,要匹配的值位于JSON数组中,用方括号(“[”、“]”)括起来,因此您可以提供多个值。例如,要匹配来自 Amazon EC2 或的事件 AWS Fargate,您可以使用以下模式,该模式匹配"source"
字段值为"aws.ec2"
或的事件"aws.fargate"
。
{
"source": ["aws.ec2", "aws.fargate"]
}
有关更多信息,请参阅 匹配多个字段值。
在 Amazon EventBridge 事件模式中使用比较运算符
Amazon EventBridge 支持使用事件模式进行声明式内容筛选。通过内容筛选,您可以编写仅在非常具体的条件下匹配事件的复杂事件模式。例如,您可以创建事件模式,在以下情况下与事件匹配:
-
事件的某个字段在特定的数值范围内。
-
事件来自特定 IP 地址。
-
事件中不存在特定字段JSON。
有关更多信息,请参阅 比较运算符。
创建事件模式时的注意事项
构造事件模式时需要考虑以下事项:
EventBridge 忽略事件中未包含在事件模式中的字段。结果是,事件模式中没有出现的字段用
"*": "*"
通配符表示。事件模式匹配的值遵循JSON规则。可以包括用引号(")括起来的字符串、数字和关键字
true
、false
和null
。对于字符串, EventBridge 使用精确 character-by-character 匹配而不进行大小写折叠或任何其他字符串规范化。
对于数字, EventBridge 使用字符串表示形式。例如,300、300.0 和 3.0e2 不相等。
如果为同一个JSON字段指定了多个模式,则 EventBridge 只使用最后一个模式。
-
请注意,在 EventBridge 编译事件模式以供使用时,它使用点 (.) 作为连接字符。
这意味着 EventBridge 将以下事件模式视为相同:
## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }
这两个事件模式都将匹配以下两个事件:
## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
注意
这描述了当前的 EventBridge 行为,不应依赖它来保持不变。
-
包含重复字段的事件模式无效。如果模式包含重复字段,则 EventBridge 仅考虑最终字段值。
例如,以下事件模式将匹配同一个事件:
## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }
并将 EventBridge 以下两个事件视为相同:
## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
注意
这描述了当前的 EventBridge 行为,不应依赖它来保持不变。