

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

# 在 Amazon 中匹配空值和空字符串的事件 EventBridge
<a name="eb-event-patterns-null-values"></a>

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

您可以创建一种[事件模式](eb-event-patterns.md)，与[事件](eb-events.md)中具有 Null 值或空字符串的字段匹配。考虑以下示例 事件。

查看最佳实践，以避免超出预期的费用和节流

```
{
  "version": "0",
  "id": "3e3c153a-8339-4e30-8c35-687ebef853fe",
  "detail-type": "EC2 Instance Launch Successful",
  "source": "aws.autoscaling",
  "account": "123456789012",
  "time": "2015-11-11T21:31:47Z",
  "region": "us-east-1",
  "resources": [
   ],
  "detail": {
    "eventVersion": "",
    "responseElements": null
   }
}
```

要匹配 `eventVersion` 值为空字符串的事件，请使用以下事件模式，它可匹配上一事件。

```
{
  "detail": {
     "eventVersion": [""]
  }
}
```

要匹配 `responseElements` 值为 Null 的事件，请使用以下事件模式，它可匹配上一事件。

```
{
  "detail": {
     "responseElements": [null]
  }
}
```

**注意**  
在模式匹配中，Null 值和空字符串是不可互换的。匹配空字符串的事件模式不匹配 `null` 值。

## 在 AWS CloudFormation 模板中使用空值
<a name="eb-event-patterns-null-values-cfn"></a>

AWS CloudFormation 不允许在模板中使用`null`值。如果您使用 YAML 或 JSON 对象语法定义了具有空值的事件模式，则模板验证失败并显示错误：`'null' values are not allowed in templates`。

要解决此限制，请将该`EventPattern`属性指定为 JSON 字符串，而不是 YAML 或 JSON 对象。以下示例说明如何匹配 AWS CloudFormation 模板中的空值：

```
MyRule:
  Type: AWS::Events::Rule
  Properties:
    EventPattern: '{"detail":{"responseElements":[null]}}'
```