

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

# 创建 Amazon EventBridge 事件模式
<a name="eb-event-patterns"></a>

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

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

**提示**  
在创建或更新规则之前，您可以使用 EventBridge 沙盒根据示例事件测试事件模式。有关更多信息，请参阅 [使用 EventBridge 沙盒测试事件模式](eb-event-pattern-sandbox.md)。

例如，考虑以下来自 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。

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

1. Amazon EC2 实例的状态必须为`terminated`。

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

请注意，在此示例中，事件模式包括与事件*相关的*字段（`source` 和 `detail-type`）以及事件正文中的一个字段 (`state`)。

**重要**  
在中 EventBridge，可以创建可能导致 higher-than-expected收费和限制的规则。例如，您可能无意中创建了一条规则，导致无限循环，规则会以递归方式触发，不会结束。假设您创建了一条规则来检测 Amazon S3 存储桶上 ACLs 已更改的内容，并触发软件将其更改为所需状态。如果不仔细编写规则，则随后对规则的更改会再次 ACLs 触发该规则，从而形成无限循环。  
有关如何编写精确的规则和事件模式，以最大限度地减少此类意外结果的指导，请参阅[关于规则的最佳实践](eb-rules-best-practices.md)和[最佳实践](eb-patterns-best-practices.md)。

## 事件总线的事件模式
<a name="eb-event-patterns-buses"></a>

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

![\[将事件与每条总线规则的事件模式进行比较，如果匹配，则将其发送到目标。\]](http://docs.aws.amazon.com/zh_cn/eventbridge/latest/userguide/images/event-pattern-bus_eventbridge_architecture.svg)


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




## Pipes 的事件 EventBridge 模式
<a name="eb-event-patterns-pipes"></a>

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

![\[将事件与管道的事件模式进行比较，如果匹配，则将其发送到目标。\]](http://docs.aws.amazon.com/zh_cn/eventbridge/latest/userguide/images/event-pattern-pipes_eventbridge_architecture.svg)


并非所有事件字段都可用于构造管道事件模式。有关更多信息，请参阅 [筛选](eb-pipes-event-filtering.md)。