

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

# 使用 AWS Systems Manager 维护窗口自动停止和启动 Amazon RDS 数据库实例
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows"></a>

*Ashita Dsilva，Amazon Web Services*

## Summary
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-summary"></a>

此模式演示如何使用 AWS Systems Manager 维护时段按特定计划自动停止和启动 Amazon Relational Database Service (Amazon RDS) 数据库实例（例如，在工作时间以外关闭数据库实例以降低成本）。在典型使用案例中，Systems Manager 具有成本效益。

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

Systems Manager 提供两种计划任务功能：[State Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-state-about.html) 和 [Maintenance Windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html)。State Manager 一次性或按特定计划设置和维护 Amazon Web Services（AWS）账户中资源所需状态配置。Maintenance Windows 在特定时间段内对账户资源运行任务。尽管您可以将此模式的方法用于状态管理器或维护窗口，但我们建议您使用维护窗口，因为它可以根据分配的优先级运行一个或多个任务，还可以运行 AWS Lambda 功能和 AWS Step Functions 任务。有关 State Manager 和 Maintenance Windows 的更多信息，请参阅 Systems Manager 文档中的[在 State Manager 和 Maintenance Windows 之间选择](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-vs-maintenance-windows.html)。

此模式为配置两个使用 cron 表达式停止并启动 Amazon RDS 数据库实例的单独维护时段提供了详细步骤。 

## 先决条件和限制
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-prereqs"></a>

**先决条件**
+ 活跃 AWS 账户的.
+ 您想要按特定计划停止和启动的现有 Amazon RDS 数据库实例。
+ 适用于所需计划的 Cron 表达式。例如，此表达式 `cron(0 9 ? * MON-FRI *)` 在每周一、周二、周三、周四和周五 09:00 运行该任务。有关更多信息，请参阅 Systems Manager 文档中的[适用于维护时段的 Cron 和 rate 表达式](https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html#reference-cron-and-rate-expressions-maintenance-window)。
+ 熟悉 Systems Manager。
+ 启动和停止 RDS 实例的权限。有关更多信息，请参阅[操作说明](#automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-epics)部分。

**限制**
+ 每次最多可以停用 7 天的 Amazon RDS 数据库实例。七天后，数据库实例将自动重启，以确保其收到所有必要维护更新。
+ 您无法停止具有只读副本或作为只读副本的数据库实例。
+ 您无法停止多可用区配置中的 Amazon RDS for SQL Server 数据库实例。
+ 服务限额适用于 Maintenance Windows 和 Systems Manager Automation。有关服务配额的更多信息，请参阅 AWS 一般参考 文档中的[AWS Systems Manager 终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/ssm.html)。 
+ 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性，请参阅[按区域划分的AWS 服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。有关特定端点，请参阅[服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)页面，然后选择相应服务的链接。

## 架构
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-architecture"></a>

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

![\[自动停止和启用 Amazon RDS 数据库实例的工作流\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/45b81621-5674-4bcf-bf7c-75ae6f62524e/images/7d943830-716e-46a3-be44-7e668c3c01ff.png)


 

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

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

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

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

**技术堆栈**
+ AWS CloudFormation
+ AWS Identity and Access Management (IAM)
+ Amazon RDS
+ Systems Manager

**自动化和扩缩**

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

## 工具
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)是一项可帮助您对 AWS 资源进行建模和设置的服务。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 是一项 Web 服务，可帮助您安全地控制对 AWS 资源的访问。
+ [Amazon Relational Database Service（Amazon RDS）](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)是一项 Web 服务，让用户能够在 AWS 云云中更轻松地设置、操作和扩展关系数据库。
+ [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html)可帮助您将 AWS 资源分组、标记资源以及管理、监控和自动执行分组资源上的任务。
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)可以 AWS 服务 用来查看和控制您的基础架构 AWS。此模式使用了 Systems Manager 的以下功能：
  + [AWS Systems Manager 自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html)简化了亚马逊弹性计算云 (Amazon EC2) 实例和其他 AWS 资源的常见维护和部署任务。
  + [AWS Systems Manager 维护窗口](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html)可帮助您定义何时对实例执行可能造成中断的操作的时间表。

## 操作说明
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-epics"></a>

### 为 Systems Manager Automation 创建并配置 IAM 服务角色
<a name="create-and-configure-the-iam-service-role-for-sys-automation"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为 Systems Manager Automation 配置 IAM 服务角色。 | 登录 AWS 管理控制台 并创建 Systems Manager Automation 的服务角色。您可以使用以下两种方法之一创建此服务角色：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows.html)Systems Manager Automation 工作流程通过使用服务角色在 Amazon RDS 数据库实例上执行启停操作，以调用 Amazon RDS。必须使用以下[内联策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)配置服务角色，该策略有权启动和停止 Amazon RDS 数据库实例：<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "RdsStartStop",<br />            "Effect": "Allow",<br />            "Action": [<br />                "rds:StopDBInstance",<br />                "rds:StartDBInstance"<br />            ],<br />            "Resource": "<RDS_Instance_ARN>"               <br />        },<br />        {<br />            "Sid": "RdsDescribe",<br />            "Effect": "Allow",<br />            "Action": "rds:DescribeDBInstances",<br />            "Resource": "*"<br />        }<br />    ]<br />}</pre>确保将 `<RDS_Instance_ARN>` 替换为 Amazon RDS 数据库实例的 Amazon 资源名称（ARN）。如果您不熟悉 IAM 策略和角色的使用，请按照[使用 AWS Systems Manager计划 Amazon RDS 停止和开始](https://aws.amazon.com/blogs/database/schedule-amazon-rds-stop-and-start-using-aws-systems-manager/)博客文章的*解决方案概述*部分中的说明操作。请确保记录服务角色的 ARN。 | AWS 管理员 | 

### 创建资源组
<a name="create-a-resource-group"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 标记 Amazon RDS 数据库实例。 | 打开 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)并标记要添加至资源组的 Amazon RDS 数据库实例。标签是分配给 AWS 资源的元数据，由键值对组成。我们建议您使用 Acti *on *StartStop**作为**标签键**和**值**。有关这方面的更多信息，请参阅 Amazon RDS 文档中的[添加、列出和移除标签](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#Tagging.HowTo)。 | AWS 管理员 | 
| 为您标记的 Amazon RDS 数据库实例创建资源组。 | 打开 [AWS Resource Groups 控制台](https://console.aws.amazon.com/resource-groups)并根据您为 Amazon RDS 数据库实例创建的标签创建资源组。在**分组条件**下，确保DBInstance为资源类型选择 **AWS:: RDS**::，然后提供标签的键值对（例如，“Action-StartStop”）。这可以确保该服务仅检查 Amazon RDS 数据库实例，而不检查带此标签的其他资源。****请确保记录资源组的名称。有关更多信息和详细步骤，请参阅 AWS Resource Groups 文档中的[生成基于标签的查询并创建群组](https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-tag-based)。  | AWS 管理员 | 

### 配置维护时段，以停止 Amazon RDS 数据库实例
<a name="configure-a-maintenance-window-to-stop-the-rds-db-instances"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建维护时段。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows.html)停止数据库实例的任务在启动时几乎立即运行，并且不会跨越整个维护时段。此模式提供了**持续时间**和**停止启动任务**的最小值，因其为维护时段的必需参数。有关更多信息和详细步骤，请参阅 Systems Manager 文档中的[创建维护时段（控制台）](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-create-mw.html)。 | AWS 管理员 | 
| 为维护时段分配目标。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows.html)有关更多信息和详细步骤，请参阅 Systems Manager 文档中的[为维护时段（控制台）分配目标](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-assign-targets.html)。 | AWS 管理员 | 
| 为维护时段分配任务。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows.html)** ****服务角色**选项定义了维护时段运行任务所需服务角色。但是，该角色不同于您之前为 Systems Manager Automation 创建的服务角色。有关更多信息和详细步骤，请参阅 Systems Manager 文档中的[为维护时段（控制台）分配任务](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-assign-tasks.html)。 | AWS 管理员 | 

### 配置维护时段，以启动 Amazon RDS 数据库实例
<a name="configure-a-maintenance-window-to-start-the-rds-db-instances"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 配置维护时段，以启动 Amazon RDS 数据库实例。 | 重复*配置维护时段以停止 Amazon RDS 数据库实例*操作说明的步骤，以配置其他维护时段，定期启动 Amazon RDS 数据库实例。在配置维护时段以启动数据库实例时，必须进行以下变更：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows.html) | AWS 管理员 | 

## 相关资源
<a name="automatically-stop-and-start-an-amazon-rds-db-instance-using-aws-systems-manager-maintenance-windows-resources"></a>
+ [使用 Systems Manager 自动化文档来管理实例并削减非工作时间成本](https://aws.amazon.com/blogs/mt/systems-manager-automation-documents-manage-instances-cut-costs-off-hours/)（AWS 博客文章）