亚马逊 EventBridge 事件模式 - Amazon EventBridge

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

亚马逊 EventBridge 事件模式

您可能不想处理传递到给定事件总线或管道的每个事件。相反,您可能需要根据事件的来源、事件类型和/或这些事件的属性来选择所有已交付事件的子集。

要指定要向目标发送哪些事件,请创建事件模式。事件模式定义了用于确定是否将事件发送到目标的数据 EventBridge 。如果事件模式与事件匹配,则将事件 EventBridge 发送到目标。事件模式与它们匹配的事件具有相同的结构。事件模式匹配或不匹配事件。

例如,考虑以下来自 Amazon 的事件EC2:

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2017-12-22T18:43:48Z", "region": "us-west-1", "resources": [ "arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0" ], "detail": { "instance-id": "i-1234567890abcdef0", "state": "terminated" } }

以下事件模式选择所有 Amazon EC2 instance-termination 事件。事件模式通过指定三个要求来匹配事件来实现此目的:

  1. 事件源必须是 Amazon EC2。

  2. 该事件必须是 Amazon EC2 状态变更通知。

  3. Amazon EC2 实例的状态必须为terminated

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

请注意,在此示例中,事件模式包括与事件相关的字段--sourcedetail-type--以及事件正文中的一个字段--state

重要

在中 EventBridge,可以创建可能导致 higher-than-expected 收费和限制的规则。例如,您可能无意中创建了一条规则,导致无限循环,规则会以递归方式触发,不会结束。假设您创建了一条规则来检测 Amazon S3 存储桶上ACLs已更改的内容,并触发软件将其更改为所需状态。如果不仔细编写规则,则随后对规则的更改会再次ACLs触发该规则,从而形成无限循环。

有关如何编写精确的规则和事件模式,以最大限度地减少此类意外结果的指导,请参阅规则的最佳实践最佳实践

活动总线的事件模式

对于事件总线,您可以为总线创建的每条规则指定事件模式。通过这种方式,您可以选择向特定目标发送哪些事件。事件总线的事件模式可以与事件源、事件元数据和/或事件详细信息值相匹配。

将事件与每条总线规则的事件模式进行比较,如果匹配则将其发送到目标。

以下视频讨论了事件总线事件模式的基础知识:

Pipes 的事件 EventBridge 模式

对于 EventBridge Pipes,您可以指定事件模式来筛选要传送到管道目标的管道源中的事件。由于每个管道都有一个事件源,因此管道的事件模式可以与事件元数据和/或详细信息值相匹配。

将事件与管道的事件模式进行比较,如果匹配则将其发送到目标。

并非所有事件字段都可用于构造管道事件模式。有关更多信息,请参阅 过滤