

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

# 教程：创建一条通过以下方式对 Amazon API 调用做出反应的 EventBridge 规则 CloudTrail
<a name="eb-log-api-call"></a>

您可以使用 Amazon EventBridge [规则](eb-rules.md)来响应由记录的 Amazon 服务发出的 API 调用 Amazon CloudTrail。

在本教程中，您将在控制台中创建[Amazon CloudTrail](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)跟踪、Lambda 函数和规则。 EventBridge 当一个 Amazon EC2 实例停止时，该规则会调用 Lambda 函数。

**Topics**
+ [步骤 1：创建 Amazon CloudTrail 跟踪](#eb-log-api-create-ct-trail)
+ [步骤 2：创建 Amazon Lambda 函数](#eb-api-create-lambda-function)
+ [步骤 3：创建规则](#eb-api-create-rule)
+ [步骤 4：测试规则](#eb-api-test-rule)
+ [步骤 5：确认成功](#success)
+ [步骤 6：清除资源](#cleanup)

## 步骤 1：创建 Amazon CloudTrail 跟踪
<a name="eb-log-api-create-ct-trail"></a>

如果您已设置了跟踪，请跳转至步骤 2。

**创建跟踪**

1. 打开 CloudTrail 控制台，网址为[https://console.aws.amazon.com/cloudtrail/](https://console.amazonaws.cn/cloudtrail/)。

1. 依次选择 **Trails (跟踪)**、**Create trail (创建跟踪)**。

1. 对于 **Trail name**，键入跟踪的名称。

1. 在**存储位置**中，选择**创建新的 S3 桶**。

1. 在 **Amazon KMS 别名**中，为 KMS 密钥键入别名。

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

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

1. 选择**创建跟踪**。

## 步骤 2：创建 Amazon Lambda 函数
<a name="eb-api-create-lambda-function"></a>

创建 Lambda 函数以记录 API 调用事件。

**创建 Lambda 函数**

1. 打开 Amazon Lambda 控制台，网址为[https://console.aws.amazon.com/lambda/](https://console.amazonaws.cn/lambda/)。

1. 选择**创建函数**。

1. 选择**从头开始创作**。

1. 输入 Lambda 函数的名称和说明。例如，将函数命名为 `LogEC2StopInstance`。

1. 将其余选项保留为默认值，然后选择**创建函数**。

1. 在函数页面的**代码**选项卡上，双击 **index.js**。

1. 使用以下代码替换现有代码。

   ```
   'use strict';
   
   exports.handler = (event, context, callback) => {
       console.log('LogEC2StopInstance');
       console.log('Received event:', JSON.stringify(event, null, 2));
       callback(null, 'Finished');
   };
   ```

1. 选择**部署**。

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

创建一条规则，在停止 Amazon EC2 实例时运行您在步骤 2 中创建的 Lambda 函数。

**创建 规则**

1. 打开 Amazon EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.amazonaws.cn/events/)。

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

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

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

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

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

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

1. 对于**事件源**，选择**Amazon 服务**。

1. 对于 **Event pattern**（事件模式），执行以下操作：

   1. 对于**事件源**，请从下拉列表中选择 **EC2**。

   1. 对于**事件类型**，请 CloudTrail从下拉列表中选择 **Amazon API 调用**方式。

   1. 选择**特定操作**并输入 `StopInstances`。

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

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

1. 对于**选择目标**，从下拉列表中选择 **Lambda 函数**。

1. 在**函数**中，选择您在**步骤 1：创建 Lambda 函数**部分创建的 Lambda 函数。在此示例中，选择 `LogEC2StopInstance`。

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

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

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

## 步骤 4：测试规则
<a name="eb-api-test-rule"></a>

可以使用 Amazon EC2 控制台停止 Amazon EC2 实例来测试您的规则。等待几分钟让实例停止，然后在 CloudWatch控制台上检查您的 Amazon Lambda 指标以验证您的函数是否已运行。

**通过停止一个实例来测试您的规则**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/) 的 Amazon EC2 控制台。

1. 启动一个实例。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[启动实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)。

1. 停止实例。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[停止和启动实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/Stop_Start.html)。

1. 要查看 Lambda 函数的输出，请执行以下操作：

   1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/)。

   1. 在导航窗格中，选择**日志**。

   1. 选择您的 Lambda 函数 (`/aws/lambda/function-name`) 的日志组的名称。

   1. 选择日志流的名称，以查看您停止的实例的函数提供的数据。

1. （可选）当您完成后，终止已停止的实例。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[终止实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/terminating-instances.html)。

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

如果您在 CloudWatch 日志中看到 Lambda 事件，则说明您已成功完成本教程。如果您的 CloudWatch 日志中没有该事件，请通过验证规则是否成功创建来开始故障排除，如果规则看起来正确，请验证您的 Lambda 函数的代码是否正确。

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

除非您想要保留为本教程创建的资源，否则可立即将其删除。通过删除不再使用的 Amazon 资源，可以防止向您的 Amazon 账户收取不必要的费用。

**要删除 EventBridge 规则**

1. 打开 EventBridge 控制台的 [“规则” 页面](https://console.amazonaws.cn/events/home#/rules)。

1. 选择您创建的规则。

1. 选择**删除**。

1. 选择**删除**。

**删除 Lambda 函数**

1. 打开 Lamba 控制台的[函数](https://console.amazonaws.cn/lambda/home#/functions)页面。

1. 选择您创建的函数。

1. 依次选择**操作**和**删除**。

1. 选择**删除**。

**要删除 CloudTrail 跟踪**

1. 打开 CloudTrail 控制台的 T [rails 页面](https://console.amazonaws.cn/cloudtrail/home#/trails)。

1. 选择您创建的跟踪。

1. 选择**删除**。

1. 选择**删除**。