使用 AWS Systems Manager 维护窗口自动停止和启动 Amazon RDS 数据库实例 - AWS Prescriptive Guidance

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

使用 AWS Systems Manager 维护窗口自动停止和启动 Amazon RDS 数据库实例

由 Ashita Dsilva 创作 () AWS

摘要

此模式演示如何使用 AWS Systems Manager 维护时段按特定计划自动停止和启动 Amazon Relational Database Service (AmazonRDS) 数据库实例(例如,在工作时间以外关闭数据库实例以降低成本)。

AWS Systems Manager Automation 提供了用于停止AWS-StopRdsInstance和启动 Amazon RDS 数据库实例的和AWS-StartRdsInstance运行手册。这意味着您无需使用 AWS Lambda 函数编写自定义逻辑或创建 Amazon Ev CloudWatch ents 规则。

Systems Manager 提供两种调度任务的功能:状态管理器和维护窗口。State Manager 一次性或按特定计划设置和维护您的 Amazon Web Services (AWS) 账户中资源所需的状态配置。Maintenance Windows 在特定时间段内对账户资源运行任务。尽管您可以将此模式的方法用于状态管理器或维护窗口,但我们建议您使用维护窗口,因为它可以根据分配的优先级运行一个或多个任务,也可以运行 AWS Lambda 功能和 AWS Step Functions 任务。有关状态管理器和维护窗口的更多信息,请参阅 Systems Manager 文档中的在状态管理器和维护窗口之间进行选择

此模式提供了配置两个单独的维护窗口的详细步骤,这两个窗口使用 cron 表达式停止然后启动 Amazon RDS 数据库实例。 

先决条件和限制

先决条件

  • 活跃 AWS 账户的.

  • 您想要按特定计划停止和启动的现有 Amazon RDS 数据库实例。

  • 适用于所需计划的 Cron 表达式。例如,表达式在每个星期一、星期二、星期三、星期四和星期五的 09:00 cron(0 9 ? * MON-FRI *) 运行任务。有关更多信息,请参阅 System s Manager 文档中的维护时段的 Cron 和费率表达式

  • 熟悉 Systems Manager。

  • 启动和停止RDS实例的权限。欲了解更多信息,请参阅 Epics 部分。

限制

  • Amazon RDS 数据库实例一次最多可以停止七天。七天后,数据库实例将自动重启,以确保其收到所有必要维护更新。

  • 您无法停止具有只读副本或作为只读副本的数据库实例。

  • 您无法在多可用区配置中停止 Amazon RDS for SQL Server 数据库实例。

  • 服务限额适用于 Maintenance Windows 和 Systems Manager Automation。有关服务配额的更多信息,请参阅 AWS 一般参考 文档中的AWS Systems Manager 终端节点和配额。 

  • 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅AWS 服务 按地区划分。有关特定终端节点,请参阅服务终端节点和配额页面,然后选择服务的链接。

架构

下图显示了自动停止和启动 Amazon RDS 数据库实例的工作流程。

自动停止和启动 Amazon RDS 数据库实例的工作流程

工作流程由以下步骤组成:

1. 创建维护时段并使用 cron 表达式来定义您的 Amazon RDS 数据库实例的停止和启动计划。

2. 使用 AWS-StopRdsInstanceAWS-StartRdsInstance 运行手册将 Systems Manager 自动化任务注册至维护时段。

3. 使用基于标签的资源组为您的 Amazon RDS 数据库实例在维护时段注册目标。

技术堆栈

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • Amazon RDS

  • Systems Manager

自动化和扩缩

您可以同时停止和启动多个 Amazon RDS 数据库实例,方法是标记所需的 Amazon RDS 数据库实例,创建包含所有已标记数据库实例的资源组,并将此资源组注册为维护时段的目标。

工具

操作说明

任务描述所需技能

配置 Systems Manager 自动化的IAM服务角色。

登录 AWS Management Console 并创建 Systems Manager 自动化的服务角色。您可以使用以下两种方法之一创建此服务角色:

Systems Manager Automation 工作流程RDS通过使用服务角色在亚马逊RDS数据库实例上执行启动和停止操作来调用亚马逊。

必须使用以下内联策略配置服务角色,该策略有权启动和停止 Amazon RDS 数据库实例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RdsStartStop", "Effect": "Allow", "Action": [ "rds:StopDBInstance", "rds:StartDBInstance" ], "Resource": "<RDS_Instance_ARN>" }, { "Sid": "RdsDescribe", "Effect": "Allow", "Action": "rds:DescribeDBInstances", "Resource": "*" } ] }

请务必<RDS_Instance_ARN>使用亚马逊RDS数据库实例的亚马逊资源名称 (ARN) 进行替换。

如果您不熟悉使用IAM策略和角色,请按照 “计划 Amazon RDS 停止并开始使用” AWS Systems Manager博客文章的 “解决方案概述” 部分中的说明进行操作。

重要

请务必记录服务角色ARN的内容。

AWS 管理员
任务描述所需技能

RDS为 Amazon 数据库实例添加标签。

打开 Amazon RDS 控制台并标记要添加到资源组的 Amazon RDS 数据库实例。标签是分配给 AWS 资源的元数据,由键值对组成。我们建议您使用 Acti on StartStop作为标签键

有关这方面的更多信息,请参阅 Amazon RDS 文档中的添加、列出和移除标签

AWS 管理员

为您标记的 Amazon RDS 数据库实例创建资源组。

打开AWS Resource Groups 控制台,根据您为 Amazon RDS 数据库实例创建的标签创建资源组。

在 “分组条件” 下,确保DBInstance为资源类型选择AWSRDS:::,然后提供标签的键值对(例如,“Action-StartStop”)。这样可以确保该服务仅检查是否存在 Amazon RDS 数据库实例,而不检查带有此标签的其他资源。 确保记录资源组的名称。

有关更多信息和详细步骤,请参阅 AWS Resource Groups 文档中的生成基于标签的查询并创建群组。 

AWS 管理员
任务描述所需技能

创建维护时段。

  1. 打开 Systems Manager 控制台,选择维护窗口,然后选择创建维护窗口。为维护时段提供名称(例如 StopRdsInstance “”),输入描述,然后取消选中 “允许未注册的目标”。

  2. 选择 CRON/Rate 表达式并提供计划表达式以定义何时应停止 Amazon RDS 数据库实例。在持续时间 输入 1,在停止启动任务中输入 0。默认情况下,会显示时区UTC。您可根据 cron 表达式中定义的时间戳更改时区,以启动维护时段。

  3. 选择 Create maintenance window。系统会返回至维护时段页面,且维护时段状态为已启用

重要

停止数据库实例的任务在启动时几乎立即运行,并且不会跨越整个维护时段。此模式提供了持续时间停止启动任务的最小值,因其为维护时段的必需参数。

有关更多信息和详细步骤,请参阅 Systems Manager 文档中的创建维护窗口(控制台)

AWS 管理员

为维护时段分配目标。

  1. Systems Manager 控制台上,选择维护窗口,选择操作,然后选择注册目标

  2. 目标区域中,指定选择资源组,然后选择账户中现有资源组的名称。

  3. 对于资源类型,选择AWS:RDS:: DBInstance,然后选择注册目标

有关更多信息和详细步骤,请参阅 Systems Manager 文档中的将目标分配给维护窗口(控制台)

AWS 管理员

为维护时段分配任务。

  1. Systems Manager 控制台上,选择维护窗口,然后选择您的维护时段。选择 “操作”,然后选择 “注册自动化” 任务

  2. 对于 “文档”,选择 AWS-StopRdsInstance

  3. 在 “目标” 部分,选择 “选择注册的目标组”,然后选择在当前维护时段中注册的维护时段目标。

  4. 对于速率控制,请 指定 并发错误阈值为百分之百。 您可以根据任务并发和错误阈值要求更改速率控制值。有关这方面的更多信息,请参阅 Systems Manager 文档中的关于并发和错误阈值

  5. IAM服务角色部分中,对于服务角色,将此框留空或创建自己的自定义角色。如果将该框留空,Systems Manager 会自动创建服务相关角色,AWSServiceRoleForAmazonSSM然后将该角色与任务相关联。要创建自己的自定义角色,请参阅为维护窗口(控制台)创建自定义服务角色,然后将该自定义角色与任务关联。

  6. 输入参数部分中,为运行手册指定以下参数:

    • InstanceId: {{RESOURCE_ID}}

      注意

      对于 InstanceId,使用虚拟参数从中提取 Amazon RDS 数据库资源 ID。ARN要了解有关伪参数的更多信息,请参阅 Systems Manager 文档中的关于伪参数

    • AutomationAssumeRole:提供您为 S ARN ystems Manager Automation 创建的服务角色。

  7. 选择注册自动化任务 

重要

服务角色选项定义了维护时段运行任务所需的服务角色。但是,该角色不同于您之前为 Systems Manager Automation 创建的服务角色。

有关更多信息和详细步骤,请参阅 Systems Manager 文档中的向维护窗口(控制台)分配任务

AWS 管理员
任务描述所需技能

配置维护时段以启动 Amazon RDS 数据库实例。

重复配置维护窗口中的步骤,停止 Amazon RDS 数据库实例 epic,配置另一个维护时段,在计划的时间启动 Amazon RDS 数据库实例。

重要

在配置维护时段以启动数据库实例时,必须进行以下更改:

  • 为维护时段使用新名称(例如,StartRdsInstance“”)。

  • 将 cron 表达式替换为用于启动数据库实例的 cron 表达式。

  • AWS-StopRdsInstance 运行手册替换为任务中的 AWS-StartRdsInstance

AWS 管理员

相关资源