Amazon EventBridge 事件模式中的内容筛选 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon EventBridge 事件模式中的内容筛选

Amazon EventBridge 支持使用事件模式。使用内容筛选,您可以编写仅匹配非常特定条件下的事件的复杂事件模式。例如,您可以创建一个与事件匹配的事件模式,当event位于特定数值范围内,如果事件来自特定 IP 地址,或仅当事件 JSON 中不存在特定字段时才进行。

前缀匹配

您可以根据事件源中的值前缀匹配事件。可以对字符串值使用前缀匹配。

例如,以下事件模式将匹配任何"time"字段开始"2017-10-02"例如"time": "2017-10-02T18:43:48Z"

{ "time": [ { "prefix": "2017-10-02" } ], }

Anything-but 匹配

除其他任何语言匹配匹配除规则中提供的内容之外的任何内容。

您可以使用任何内容-但匹配字符串和数值,包括仅包含字符串或仅包含数值的列表。

以下事件模式显示任何内容,但与字符串和数字匹配。

{ "detail": { "state": [ { "anything-but": "initializing" } ] } } { "detail": { "x-limit": [ { "anything-but": 123 } ] } }

以下事件模式显示任何内容,但与字符串列表的匹配。

{ "detail": { "state": [ { "anything-but": [ "stopped", "overloaded" ] } ] } }

以下事件模式显示任何内容,但与数值列表的匹配。

{ "detail": { "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }

以下事件模式显示任何匹配,但匹配任何没有前缀的事件"init"中的"state"字段。

{ "detail": { "state": [ { "anything-but": { "prefix": "init" } } ] } }

数值匹配

数字匹配适用于 JSON 编号的值。它仅限于-1.0e9 和 +1.0e9 之间的值,精度为 15 位,小数点右侧为六位。

下面显示了仅匹配所有字段的事件模式的数值匹配。

{ "detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } }

IP 地址匹配

您可以将 IP 地址匹配用于 IPv4 和 IPv6 地址。以下事件模式显示 IP 地址与以 10.0.0 开头并以 0 到 24 之间的数字结尾的 IP 地址匹配。

{ "detail": { "sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ] } }

Exists 匹配

Exists 匹配适用于确定事件的 JSON 中存在或不存在某个字段。

Exists 匹配仅适用于叶节点。它对于中间节点不起作用。

以下事件模式匹配任何没有detail.c-count字段。

{ "detail": { "c-count": [ { "exists": false } ] } }

前述事件模式匹配以下事件。

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "state": [ "initializing", "running" ] } }

前面的事件模式与以下事件不匹配,因为它具有detail.c-count字段。

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "state": [ "initializing", "running" ] "c-count" : { "c1" : 100 } } }

具有多个匹配的复杂示例

您可以将多个匹配规则组合为更复杂的事件模式。例如,以下事件模式将anything-butnumeric

{ "time": [ { "prefix": "2017-10-02" } ], "detail": { "state": [ { "anything-but": "initializing" } ], "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }