新闻中心

  • 首页
  • 新闻中心
  • 为 Amazon RDS 待处理维护操作设置通知 数据库博客

为 Amazon RDS 待处理维护操作设置通知 数据库博客

2026-01-27 12:16:43

设置 Amazon RDS 待处理维护操作的通知

关键要点

Amazon RDS 是一项完全托管的数据库服务,使用时需关注待处理维护操作。本文将介绍如何通过 Amazon SNS、EventBridge 和 Lambda 自动设置待处理维护操作的通知。解决方案涉及创建 SNS 主题、Lambda 函数及 EventBridge 定时任务,确保及时接收邮件通知。

Amazon 关系数据库服务Amazon RDS是一种由 AWS 提供的完全托管的数据库服务,允许用户在云中设置、操作和扩展关系数据库。尽管 Amazon RDS 提供了无缝的数据库管理,但保持对待处理维护操作的关注至关重要,这些操作可能会影响数据库的可用性。Amazon RDS 定期进行维护活动,以确保您的数据库的健康和性能。这些维护操作可以包括安全更新到版本升级等。这些重要活动通常在维护窗口执行,但在实施过程中可能会中断数据库的可用性。因此,数据库管理员和 AWS 用户应保持对待处理维护操作的关注,以采取主动措施,尽量减少对操作的影响。然而,AWS 并不提供主动发送待处理维护操作通知的机制。

在本文中,我们探讨了如何使用 Amazon Simple Notification Service (Amazon SNS)、Amazon EventBridge 和 AWS Lambda 主动设置通知。这种解决方案可以自动推送即将到来的维护通知,而不是从 API 或 AWS 管理控制台 中获取通知。

解决方案概览

在生产环境中,有效管理和预见待处理维护操作对于确保 RDS 实例的顺利运行至关重要。在这一部分,我们讨论了设置自定义解决方案以获取关于 Amazon RDS 待处理维护操作 的通知的架构。

在这个解决方案中,我们提供了一个自定义的 Lambda 函数,该函数通过 EventBridge 调度器被调用,并通过用户配置的 SNS 主题推送有关 Amazon RDS 待处理维护操作的消息。我们将演示如何识别待处理维护操作,设置自定义 Lambda 函数,以及配置 EventBridge 调度器和 Amazon SNS 以获取有关这些操作的电子邮件通知。您可以使用此解决方案提前规划并妥善处理 Amazon RDS 的待处理维护操作,同时保持 RDS 实例的可用性符合您的业务要求。

以下是设置解决方案的高层步骤:

国外加速器下载检查 RDS 实例是否有待处理维护操作。创建一个 SNS 主题,该主题将由 Lambda 函数调用并发送电子邮件通知。创建一个 Lambda 函数,该函数将由 EventBridge 调度调用。创建一个 EventBridge 调度,以调用 Lambda 函数。

前提条件

要设置 Amazon RDS 待处理维护操作的通知,您需要:

创建一个 RDS 实例,以便捕获待处理维护并发送电子邮件通知。设置一个 Amazon SNS 主题,该主题将由 Lambda 函数触发并发送电子邮件通知。

检查 RDS 实例的待处理维护操作

要检查 Amazon RDS 的待处理维护操作,您可以使用 AWS 命令行界面 (AWS CLI) 或 Amazon RDS 控制台。有关说明,请参见 describependingmaintenanceactions 或 查看待处理维护。以下图片显示了 RDS 实例详细信息页面上待处理维护选项卡中的 dbupgrade 操作类型。

在本文中,我们查找了我们的 RDS 实例的待处理维护操作,并实施解决方案以捕获此信息。如果您在设置此解决方案时没有看到任何待处理维护操作,您仍然可以继续其他配置,因为它将在实例最终有计划待处理操作时自动激活。

创建 SNS 主题

下一步是创建一个 SNS 主题,该主题将由 Lambda 函数调用以发送电子邮件通知。有关说明,请参见 创建 Amazon SNS 主题。

创建 Lambda 函数

使用以下 Python 脚本来配置 Lambda 函数。用您的 SNS 主题 ARN 替换 snstopicarn 的值,并与您正在部署解决方案的同一 AWS 区域相匹配:

pythonimport boto3import jsonfrom datetime import datetime date

def lambdahandler(event context) # AWS 区域 region = YourRegion

# 初始化 RDS 和 SNS 客户端rdsclient = boto3client(rds regionname=region)snsclient = boto3client(sns regionname=region)# 指定用于通知的 Amazon SNS 主题 ARNsnstopicarn = arnawssnsYourRegionYourAccountIDYourSNSTopicName# 检索具有待处理维护操作的实例instanceswithpendingactions = rdsclientdescribependingmaintenanceactions()# 检查是否存在待处理维护操作if PendingMaintenanceActions in instanceswithpendingactions    # 提取待处理操作    pendingactions = instanceswithpendingactions[PendingMaintenanceActions]    # 遍历待处理操作    for action in pendingactions        # 创建通知消息的边框表格格式        notificationmessage = fn        notificationmessage = f 资源标识符        待处理维护操作 操作                 待处理维护操作 描述                      n        notificationmessage = fn        notificationmessage = f {action[ResourceIdentifier]} n        for detail in action[PendingMaintenanceActionDetails]            notificationmessage = f                       {detail[Action]}  {detail[Description]} n        notificationmessage = f        # 发布通知到 SNS 主题        snsclientpublish(            TopicArn=snstopicarn            Message=notificationmessage            Subject=待处理 RDS 维护操作        )    # 返回成功响应    return {        statusCode 200        body jsondumps(通知发送成功!)    }else    # 返回未发现待处理维护操作的响应    return {        statusCode 200        body jsondumps(没有待处理维护操作。)    }

以下截图显示了 Lambda 控制台上的 Python 代码。

Lambda 函数创建过程为您提供了 创建一个具有基本 Lambda 权限的新角色 或 使用现有角色 选项。此 AWS 身份和访问管理 (IAM) 角色在其策略中需要特定权限。

要查看与此 Lambda 函数关联的 IAM 角色,请导航到函数详细信息页面的 配置 选项卡,并在左侧窗格中选择 权限。角色名称显示在 执行角色 下,如下截图所示。

修改 IAM 角色以包含 Amazon RDS 描述维护和 Amazon SNS 发布权限。以下是示例 IAM 策略:

json{ Version 20121017 Statement [ { Effect Allow Action rdsDescribePendingMaintenanceActions Resource } { Effect Allow Action snsPublish Resource } { Effect Allow Action logsCreateLogGroup Resource arnawslogsYourRegionYourAccountID } { Effect Allow Action [ logsCreateLogStream logsPutLogEvents ] Resource [ arnawslogsYourRegionYourAccountIDloggroup/aws/lambda/YourLambdaFunction ] } ]}

您可以通过选择 测试 来手动调用 Lambda 函数,如下截图所示。

如果您的任何 RDS 数据库有待处理操作,您将收到电子邮件,如下截图所示。

如果您在 Lambda 函数测试运行期间遇到超时错误,可以执行以下操作:

在函数详细信息页面,选择 配置选项卡。在左侧窗格中选择 常规配置 。选择 编辑。增加超时值默认超时为 3 秒。选择 保存。

以下截图显示了 Lambda 控制台上的超时配置。

创建 EventBridge 调度

在此部分,您将使用 EventBridge 调度器 创建一个调度以调用 Lambda 函数。完成以下步骤:

在 EventBridge 控制台中,选择左侧导航窗格中的 调度 。选择 创建调度 。在 调度名称 中输入一个名字。对于 调度组,保持默认。在 发生频率 中,选择 重复调度 。在 时区 中选择您偏好的时区。在 调度类型 中,选择 基于 Cron 的调度 。在 Cron 表达式 中,指定您希望多长时间收到通知在本文中,我们将调度配置为每天下午 502 EST(0217)。对于 灵活时间窗口,选择 关闭。选择 下一步。

在 目标 API 中,选择 AWS Lambda 调用。对于 Lambda 函数,选择您创建的 Lambda 函数的名称。选择 下一步。

在 设置 部分,选择 权限,选择 为此调度创建新角色 。选择 下一步。审查您的配置并选择 创建调度 。

现在您的 Lambda 函数将根据您的 cron 表达式激活。如果它发现任何待处理操作,将会发送电子邮件通知您。该解决方案在相同区域内对所有依赖服务进行了测试。此解决方案可以与任何 Amazon RDS 和 Amazon Aurora 引擎一起使用。Lambda 函数代码可以根据您的具体业务需求进行自定义。

清理

为避免持续收费,删除您使用此解决方案创建的资源:

删除 RDS 实例。删除 SNS 主题。删除 EventBridge 调度。删除 IAM 角色。删除 Lambda 函数。

结论

在本文中,我们展示了一种解决方案,该方案使用 Amazon SNS、EventBridge 和 Lambda 设置自定义通知,以获取有关 Amazon RDS 待处理维护操作的信息。借助此解决方案,您可以自动化接收及时通知的过程。如果您有任何问题或疑虑,请在评论区留言。

关于作者

阿卜杜勒萨尔克 是一名在 AWS 工作了 25 年的云支持工程师,擅长 AWS DMS。专注于提供出色的 AWS 云客户体验,他与外部客户合作处理各种场景,如故障排除 Amazon RDS 基础设施、协助 AWS DMS 迁移、撰写和改进内部文档,并在内部流程的改进中发挥了关键作用。

为 Amazon RDS 待处理维护操作设置通知 数据库博客

尼鲁帕姆达塔 是 AWS 的高级云支持 DBE,从业超过 4 年。拥有超过 12 年的数据库工程和基础架构经验,尼鲁帕姆在 Amazon RDS 核心系统及 Amazon RDS for SQL Server 方面也成为了主题专家。他为客户提供技术支持,指导他们迁移、优化以及在 AWS 云中的旅程。

弗拉德波多马茨基 是 AWS 支持中的安全和数据库工程师。拥有超过 9 年的整体技术经验,他为客户提供数据库监控、AWS 迁移、加密和帐户安全的技术支持。他始终对此类 IT 安全保持好奇,并正在攻读网络安全硕士学位。