

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

# 教程：在 EventBridge 中使用输入转换器转换事件
<a name="eb-input-transformer-tutorial"></a>

在 EventBridge 中，将[事件](eb-events.md)传递给[规则](eb-rules.md)的目标之前，可以使用[输入转换器](eb-transform-target-input.md)自定义事件的文本。

方法是从事件中定义 JSON 路径，并将其输出分配给不同的变量。然后，您可以在输入模板中使用这些变量。不能对字符 < 和 > 进行转义。有关更多信息，请参阅 [亚马逊 EventBridge 输入转换](eb-transform-target-input.md)。

**注意**  
如果您指定一个变量以匹配在事件中不存在的 JSON 路径，则不会创建该变量，并且不会在输出中显示该变量。

在本教程中，您使用 `detail-type: "customerCreated"` 创建与事件匹配的规则。输入转换器将变量 `type` 映射到事件中的 \$1.detail-type JSON 路径。然后，EventBridge 将此变量放入输入模板 "This event was <type>." 结果是以下 Amazon SNS 消息。

```
"This event was of customerCreated type."
```

**Topics**
+ [步骤 1：创建一个 Amazon SNS 主题](#eb-input-transformer-tutorial-create-topic)
+ [步骤 2：创建 Amazon SNS 订阅](#eb-input-transformer-tutorial-create-sns)
+ [步骤 3：创建规则](#eb-input-transformer-create-rule)
+ [步骤 4：发送测试事件](#eb-input-transformer-send-test-events)
+ [步骤 5：确认成功](#success)
+ [步骤 6：清除资源](#cleanup)

## 步骤 1：创建一个 Amazon SNS 主题
<a name="eb-input-transformer-tutorial-create-topic"></a>

创建一个主题，接收来自 EventBridge 的事件。

**要创建主题，请执行以下操作**

1. 通过 [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) 打开 Amazon SNS 控制台。

1. 在导航窗格中，选择 **Topics（主题）**。

1. 选择**创建主题**。

1. 对于**类型**，选择**标准**。

1. 输入 **eventbridge-IT-test** 作为主题名称。

1. 选择**创建主题**。

## 步骤 2：创建 Amazon SNS 订阅
<a name="eb-input-transformer-tutorial-create-sns"></a>

创建订阅，接收包含转换信息的电子邮件。

**创建订阅**

1. 通过以下网址打开 Amazon SNS 控制台：[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)。

1. 在导航窗格中，选择**订阅**。

1. 选择**创建订阅**。

1. 对于**主题 ARN**，选择您在步骤 1 中创建的主题。在本教程中，选择 **eventbridge-IT-test**。

1. 对于**协议**，选择**电子邮件**。

1. 对于 **Endpoint (终端节点)**，输入您的电子邮件地址。

1. 选择**创建订阅**。

1. 在收到的 AWS 通知电子邮件中选择**确认订阅**，以确认订阅。

## 步骤 3：创建规则
<a name="eb-input-transformer-create-rule"></a>

创建规则，使用输入转换器自定义传送到目标的实例状态信息。

**创建规则**

1. 打开位于 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 的 Amazon EventBridge 控制台。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 为规则输入名称和描述。例如，将规则命名为 `ARTestRule`

1. 对于**事件总线**，请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发，请选择**默认**。当您账户中的某个 AWS 服务发出一个事件时，它始终会发送到您账户的默认事件总线。

1. 对于**规则类型**，选择**具有事件模式的规则**。

1. 选择**下一步**。

1. 对于**事件源**，选择**其他**。

1. 对于**事件模式**，输入以下代码：

   ```
   {
     "detail-type": [
       "customerCreated"
     ]
   }
   ```

1. 选择**下一步**。

1. 对于**目标类型**，选择**AWS 服务**。

1. 对于**选择目标**，从下拉列表中选择 **SNS 主题**。

1. 对于**主题**，请选择您在步骤 1 中创建的 Amazon SNS 主题。在本教程中，选择 **eventbridge-IT-test**。

1. 对于**其他设置**，执行以下操作：

   1. 对于**配置目标输入**，从下拉列表中选择**输入转换器**。

   1. 选择**配置输入转换器**。

   1. 对于**示例事件**，输入以下代码：

      ```
      {
        "detail-type": "customerCreated"
      }
      ```

   1. 对于**目标输入转换器**，执行以下操作：

      1. 对于**输入路径**，输入以下代码：

         ```
         {"detail-type":"$.detail-type"}
         ```

      1. 对于**输入模板**，输入以下代码：

         ```
         "This event was of <detail-type> type."
         ```

   1. 选择**确认**。

1. 选择**下一步**。

1. 选择**下一步**。

1. 查看规则详细信息并选择**创建规则**。

## 步骤 4：发送测试事件
<a name="eb-input-transformer-send-test-events"></a>

现在，您已经设置了 SNS 主题和规则，我们将发送测试事件，以确保规则可正常运行。

**发送测试事件（控制台）**

1. 访问 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)，打开 Amazon EventBridge 控制台。

1. 在导航窗格中，选择 **Event Buses (事件总线)**。

1. 在**默认事件总线**图块中，选择**操作**、**发送事件**。

1. 输入事件源。例如 `TestEvent`。

1. 在**详细信息类型**中，输入 `customerCreated`。

1. 在**事件详细信息**中，输入 `{}`。

1. 选择**发送**。

## 步骤 5：确认成功
<a name="success"></a>

如果您从 AWS 通知收到一封与预期输出相匹配的电子邮件，则说明您已成功完成本教程。

## 步骤 6：清除资源
<a name="cleanup"></a>

除非您想要保留为本教程创建的资源，否则可立即将其删除。请删除您不再使用的 AWS 资源，这样可防止您的 AWS 账户产生不必要的费用。

**删除 SNS 主题**

1. 在 SNS 控制台中打开[主题页面](https://console.aws.amazon.com/sns/v3/home#/topics)。

1. 选择您创建的主题。

1. 选择**删除**。

1. 输入 **delete me**。

1. 选择**删除**。

**删除 SNS 订阅**

1. 在 SNS 控制台中打开[订阅页面](https://console.aws.amazon.com/sns/v3/home#/subscriptions)。

1. 选择您创建的订阅。

1. 选择 **Delete**。

1. 选择 **Delete**。

**删除 EventBridge 规则**

1. 在 EventBridge 控制台中打开[规则页面](https://console.aws.amazon.com/events/home#/rules)。

1. 选择您创建的规则。

1. 选择 **Delete**。

1. 选择 **Delete**。