创建对 Amazon RDS 事件触发的规则
使用 Amazon CloudWatch Events 和 Amazon EventBridge,您可以自动执行Amazon服务并响应系统事件,例如应用程序可用性问题或资源更改。
创建将 Amazon RDS 事件发送到 CloudWatch Events 的规则
您可以编写简单规则来指示所关注的 Amazon RDS 事件,并指示在事件匹配规则时要执行的自动化操作。您可以设置接收 JSON 格式的事件的各种目标,例如 Amazon Lambda 函数或 Amazon SNS 主题。例如,您可以将 Amazon RDS 配置为只要创建或删除数据库实例就向 CloudWatch Events 或 Amazon EventBridge 发送事件。有关更多信息,请参阅 Amazon CloudWatch Events 用户指南和 Amazon EventBridge 用户指南。
创建对 RDS 事件触发的规则:
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中的事件下,选择规则。
-
选择 Create rule (创建规则)。
-
对于 Event Source (事件源),执行以下操作:
-
选择 Event Pattern (事件模式)。
-
对于服务名称,请选择 Relational Database Service (RDS)。
-
对于 Event Type(事件类型),请选择触发事件的 Amazon RDS 资源的类型。例如,如果数据库实例触发事件,请选择 RDS DB Instance Event(RDS 数据库实例事件)。
-
-
对于目标,选择添加目标,并选择当检测到选定类型的事件时要执行的 Amazon 服务。
-
在此部分的其他字段中,根据需要输入此目标类型的特定信息。
-
对于许多目标类型,CloudWatch Events 需要权限以便将事件发送到目标。在这些情况下,CloudWatch Events 可以创建运行事件所需的 IAM 角色:
-
若要自动创建 IAM 角色,请选择为此特定资源创建新角色。
-
要使用您之前创建的 IAM 角色,请选择使用现有角色。
-
-
根据需要,可以重复步骤 5 至 7 为此规则添加另一目标。
-
选择 Configure details (配置详细信息)。对于 Rule definition (规则定义),键入规则的名称和描述。
规则名称在此区域中必须是唯一的。
-
选择 Create rule (创建规则)。
有关更多信息,请参阅 Amazon CloudWatch 用户指南中的创建触发事件的 CloudWatch Events 规则。
教程:使用 Amazon EventBridge 记录数据库实例的状态更改
在本教程中,您可以创建 Amazon Lambda 函数来记录 Amazon RDS 实例的状态更改。然后,您可以创建一项规则,只要现有 RDS 数据库实例的状态发生更改,便运行该函数。本教程假定您有一个小型的可以暂时关闭的正在运行的测试实例。
重要
请勿在正在运行的生产数据库实例上执行本教程。
步骤 1:创建 Amazon Lambda 函数
创建 Lambda 函数以记录状态更改事件。在创建规则时,您可以指定此函数。
创建 Lambda 函数
打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/
。 -
如果您是首次接触 Lambda,您将看到欢迎页面。选择 Get Started Now (立即开始)。否则,选择创建函数。
-
选择 Author from scratch (从头创作)。
-
在 Create function (创建函数) 页面上,执行以下操作:
-
输入 Lambda 函数的名称和说明。例如,将函数命名为
RDSInstanceStateChange
。 -
在 Runtime(运行时)中,选择 Node.js 16x。
-
对于 Architecture(架构),选择 x86_64。
-
对于 Execution role(执行角色),请执行以下任一操作:
-
选择 Create a new role with basic Lambda permissions (创建具有基本 Lambda 权限的新角色)。
-
对于 Existing role(现有角色),选择 Use an existing role(使用现有角色)。选择要使用的角色。
-
-
选择创建函数。
-
-
在 RDSInstanceStateChange 页面上,请执行以下操作:
-
在 Code source (代码源) 中,请选择index.js。
-
在 index.js 窗格中,删除现有代码。
-
输入以下代码:
console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); };
-
选择 Deploy (部署)。
-
步骤 2:创建规则
创建一个规则,以便启动 Lambda 实例时运行 Amazon RDS 函数。
创建 EventBridge 规则
打开位于 https://console.aws.amazon.com/events/
的 Amazon EventBridge 控制台。 -
在导航窗格中,选择 Rules (规则)。
-
选择 Create rule (创建规则)。
-
为规则输入名称和描述。例如,输入
RDSInstanceStateChangeRule
。 -
选择 Rule with an event pattern(具有事件模式的规则),然后选择 Next(下一步)。
-
对于 Event source(事件源),选择 Amazon 事件或 EventBridge 合作伙伴事件。
-
向下滚动到 Event pattern(事件模式)部分。
-
对于事件源,选择 Amazon Web Services。
-
对于 Amazon 服务,请选择关系数据库服务(RDS)。
-
对于 Event type (事件类型),请选择 RDS DB Instance Event (RDS 数据库实例事件)。
-
保留原定设置事件模式。然后选择下一步。
-
对于 Target types(目标类型),选择 Amazon service(服务)。
-
对于 Select a target(选择目标),选择 Lambda function(Lambda 函数)。
-
对于 Function(函数),选择您创建的 Lambda 函数。然后选择下一步。
-
在 Configure tags(配置标签)中,选择 Next(下一步)。
-
查看您的规则中的步骤。然后,选择 Create rule(创建规则)。
步骤 3:测试规则
要测试您的规则,请关闭 RDS 数据库实例。等待几分钟,在实例关闭后,验证您的 Lambda 函数是否已调用。
通过停止一个数据库实例来测试您的规则
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
停止一个 RDS 数据库实例
打开位于 https://console.aws.amazon.com/events/
的 Amazon EventBridge 控制台。 -
在导航窗格中,选择 Rules (规则),再选择所创建规则的名称。
-
在规则详细信息中,选择监控。
随后您将被重定向至 Amazon CloudWatch 控制台。如果您未被重定向,请单击查看 CloudWatch 中的指标。
-
在 All metrics (所有指标)中,选择所创建规则的名称。
该图表表明规则已被调用。
-
在导航窗格中,选择 Log groups (日志组)。
-
选择 Lambda 函数 (/aws/lambda/
function-name
)的日志组的名称。 -
选择日志流的名称,以查看您启动的实例的函数提供的数据。您应该会看到接收的事件,类似以下内容:
{ "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 事件的更多示例,请参阅Amazon RDS 事件概述。
-
(可选)完成后,您可以打开 Amazon RDS 控制台并启动之前停止的实例。