Amazon EventBridge 事件模式 - Amazon EventBridge

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

Amazon 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 中,创建的规则可能导致高于预期的费用和节流。例如,您可能无意中创建了一条规则,导致无限循环,规则会以递归方式触发,不会结束。假设您创建了一条规则,来检测 S3 桶中的 ACL 更改,然后触发软件以将 ACL 更改为所需状态。如果编写该规则时不小心,则 ACL 的后续更改将再次触发该规则,从而产生无限循环。

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

事件总线的事件模式

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

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

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

EventBridge 管道的事件模式

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

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

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