

# 创建对 Amazon Aurora 事件触发的规则
<a name="rds-cloud-watch-events"></a>

使用 Amazon EventBridge，您可以自动执行 AWS 服务和响应系统事件，例如应用程序可用性问题或资源更改。

**Topics**
+ [教程：使用 Amazon EventBridge 记录数据库实例的状态更改](#log-rds-instance-state)

## 教程：使用 Amazon EventBridge 记录数据库实例的状态更改
<a name="log-rds-instance-state"></a>

在本教程中，您可以创建 AWS Lambda 函数来记录 实例的状态更改。然后，您可以创建一项规则，只要现有 RDS 数据库实例的状态发生更改，便运行该函数。本教程假定您有一个小型的可以暂时关闭的正在运行的测试实例。

**重要**  
请勿在正在运行的生产数据库实例上执行本教程。

**Topics**
+ [步骤 1：创建 AWS Lambda 函数](#rds-create-lambda-function)
+ [步骤 2：创建规则](#rds-create-rule)
+ [步骤 3：测试规则](#rds-test-rule)

### 步骤 1：创建 AWS Lambda 函数
<a name="rds-create-lambda-function"></a>

创建 Lambda 函数以记录状态更改事件。在创建规则时，您可以指定此函数。

**创建 Lambda 函数**

1. 打开 AWS Lambda 控制台，地址：[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 如果您是首次接触 Lambda，您将看到欢迎页面。选择 **Get Started Now (立即开始)**。否则，选择**创建函数**。

1. 选择 **Author from scratch (从头创作)**。

1. 在 **Create function (创建函数)** 页面上，执行以下操作：

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

   1. 在 **Runtime**（运行时）中，选择 **Node.js 16x**。

   1. 对于 **Architecture**（架构），选择 **x86\$164**。

   1. 对于 **Execution role**（执行角色），请执行以下任一操作：
      + 选择 **Create a new role with basic Lambda permissions (创建具有基本 Lambda 权限的新角色)**。
      + 对于 **Existing role**（现有角色），选择 **Use an existing role**（使用现有角色）。选择要使用的角色。

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

1. 在 **RDSInstanceStateChange** 页面上，请执行以下操作：

   1. 在 **Code source (代码源)** 中，请选择**index.js**。

   1. 在 **index.js** 窗格中，删除现有代码。

   1. 输入以下代码：

      ```
      console.log('Loading function');
      
      exports.handler = async (event, context) => {
          console.log('Received event:', JSON.stringify(event));
      };
      ```

   1. 选择 **Deploy (部署)**。

### 步骤 2：创建规则
<a name="rds-create-rule"></a>

创建一个规则，以便启动 Lambda 实例时运行 Amazon RDS 函数。

**创建 EventBridge 规则**

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

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

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

1. 为规则输入名称和描述。例如，输入 **RDSInstanceStateChangeRule**。

1. 选择 **Rule with an event pattern**（具有事件模式的规则），然后选择 **Next**（下一步）。

1. 对于**事件源**，选择 **AWS 事件或 EventBridge 合作伙伴事件**。

1. 向下滚动到 **Event pattern**（事件模式）部分。

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

1. 对于 **AWS 服务**，请选择**关系数据库服务（RDS）**。

1. 对于 **Event type (事件类型)**，请选择 **RDS DB Instance Event (RDS 数据库实例事件)**。

1. 保留原定设置事件模式。然后选择**下一步**。

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

1. 对于 **Select a target**（选择目标），选择 **Lambda function**（Lambda 函数）。

1. 对于 **Function**（函数），选择您创建的 Lambda 函数。然后选择**下一步**。

1. 在 **Configure tags**（配置标签）中，选择 **Next**（下一步）。

1. 查看您的规则中的步骤。然后，选择 **Create rule**（创建规则）。

### 步骤 3：测试规则
<a name="rds-test-rule"></a>

要测试您的规则，请关闭 RDS 数据库实例。等待几分钟，在实例关闭后，验证您的 Lambda 函数是否已调用。

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

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

1. 停止一个 RDS 数据库实例

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

1. 在导航窗格中，选择 **Rules (规则)**，再选择所创建规则的名称。

1. 在**规则详细信息**中，选择**监控**。

   随后您将被重定向至 Amazon CloudWatch 控制台。如果您未被重定向，请单击**查看 CloudWatch 中的指标**。

1. 在 **All metrics (所有指标)**中，选择所创建规则的名称。

   该图表表明规则已被调用。

1. 在导航窗格中，选择 **Log groups (日志组)**。

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

1. 选择日志流的名称，以查看您启动的实例的函数提供的数据。您应该会看到接收的事件，类似以下内容：

   ```
   {
       "version": "0",
       "id": "12a345b6-78c9-01d2-34e5-123f4ghi5j6k",
       "detail-type": "RDS DB Instance Event",
       "source": "aws.rds",
       "account": "111111111111",
       "time": "2021-03-19T19:34:09Z",
       "region": "us-east-1",
       "resources": [
           "arn:aws:rds:us-east-1:111111111111:db:testdb"
       ],
       "detail": {
           "EventCategories": [
               "notification"
           ],
           "SourceType": "DB_INSTANCE",
           "SourceArn": "arn:aws:rds:us-east-1:111111111111:db:testdb",
           "Date": "2021-03-19T19:34:09.293Z",
           "Message": "DB instance stopped",
           "SourceIdentifier": "testdb",
           "EventID": "RDS-EVENT-0087"
       }
   }
   ```

   有关 JSON 格式的 RDS 事件的更多示例，请参阅[Aurora 事件概述](working-with-events.md#rds-cloudwatch-events.sample)。

1. （可选）完成后，您可以打开 Amazon RDS 控制台并启动之前停止的实例。