在中创建事件模式 EventBridge - Amazon EventBridge

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在中创建事件模式 EventBridge

要创建事件模式,您要指定希望事件模式匹配的事件字段。仅指定用于匹配的字段。

例如,以下事件模式示例仅提供三个字段的值:顶级字段"source""detail-type",以及"detail"对象"state"字段内的字段。 EventBridge应用规则时会忽略事件中的所有其他字段。

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

要使事件模式匹配事件,事件必须包含模式中列出的所有字段名。字段名必须还显示在具有相同嵌套结构的事件中。

当你编写事件模式来匹配事件时,你可以使用TestEventPatternAPI或test-event-patternCLI命令来测试你的模式是否与正确的事件匹配。有关更多信息,请参阅TestEventPattern

匹配事件值

在事件模式中,要匹配的值位于JSON数组中,用方括号(“[”、“]”)括起来,因此您可以提供多个值。例如,要匹配来自 Amazon EC2 或的事件 AWS Fargate,您可以使用以下模式,该模式匹配"source"字段值为"aws.ec2"或的事件"aws.fargate"

{ "source": ["aws.ec2", "aws.fargate"] }

有关更多信息,请参阅 匹配多个字段值

在 Amazon EventBridge 事件模式中使用比较运算符

Amazon EventBridge 支持使用事件模式进行声明式内容筛选。通过内容筛选,您可以编写仅在非常具体的条件下匹配事件的复杂事件模式。例如,您可以创建事件模式,在以下情况下与事件匹配:

  • 事件的某个字段在特定的数值范围内。

  • 事件来自特定 IP 地址。

  • 事件中不存在特定字段JSON。

有关更多信息,请参阅 比较运算符

创建事件模式时的注意事项

构造事件模式时需要考虑以下事项:

  • EventBridge 忽略事件中未包含在事件模式中的字段。结果是,事件模式中没有出现的字段用 "*": "*" 通配符表示。

  • 事件模式匹配的值遵循JSON规则。可以包括用引号(")括起来的字符串、数字和关键字 truefalsenull

  • 对于字符串, 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 行为,不应依赖它来保持不变。