创建对 Amazon Aurora 事件触发的规则 - Amazon Aurora

创建对 Amazon Aurora 事件触发的规则

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

教程:使用 Amazon EventBridge 记录数据库实例的状态更改

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

重要

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

步骤 1:创建 AWS Lambda 函数

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

创建 Lambda 函数
  1. 打开 AWS Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

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

  3. 选择 Author from scratch (从头创作)

  4. Create function (创建函数) 页面上,执行以下操作:

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

    2. Runtime(运行时)中,选择 Node.js 16x

    3. 对于 Architecture(架构),选择 x86_64

    4. 对于 Execution role(执行角色),请执行以下任一操作:

      • 选择 Create a new role with basic Lambda permissions (创建具有基本 Lambda 权限的新角色)

      • 对于 Existing role(现有角色),选择 Use an existing role(使用现有角色)。选择要使用的角色。

    5. 选择创建函数

  5. RDSInstanceStateChange 页面上,请执行以下操作:

    1. Code source (代码源) 中,请选择index.js

    2. index.js 窗格中,删除现有代码。

    3. 输入以下代码:

      console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); };
    4. 选择 Deploy (部署)

步骤 2:创建规则

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

创建 EventBridge 规则
  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

  2. 在导航窗格中,选择规则

  3. 选择创建规则

  4. 为规则输入名称和描述。例如,输入 RDSInstanceStateChangeRule

  5. 选择 Rule with an event pattern(具有事件模式的规则),然后选择 Next(下一步)。

  6. 对于事件源,选择AWS 事件或 EventBridge 合作伙伴事件

  7. 向下滚动到 Event pattern(事件模式)部分。

  8. 对于事件源,选择 AWS 服务

  9. 对于 AWS 服务,请选择关系数据库服务(RDS)

  10. 对于 Event type (事件类型),请选择 RDS DB Instance Event (RDS 数据库实例事件)

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

  12. 对于目标类型,选择AWS 服务

  13. 对于 Select a target(选择目标),选择 Lambda function(Lambda 函数)。

  14. 对于 Function(函数),选择您创建的 Lambda 函数。然后选择下一步

  15. Configure tags(配置标签)中,选择 Next(下一步)。

  16. 查看您的规则中的步骤。然后,选择 Create rule(创建规则)。

步骤 3:测试规则

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

通过停止一个数据库实例来测试您的规则
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

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

  3. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

  5. 规则详细信息中,选择监控

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

  6. All metrics (所有指标)中,选择所创建规则的名称。

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

  7. 在导航窗格中,选择 Log groups (日志组)

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

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

    { "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 事件概述

  10. (可选)完成后,您可以打开 Amazon RDS 控制台并启动之前停止的实例。