

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

# 自动执行停止和启动计划
<a name="windows-ec2-schedules"></a>

## 概述
<a name="windows-ec2-schedules-overview"></a>

[AWS上的实例调度器](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/)能够通过自动控制 [Amazon EC2](https://aws.amazon.com/ec2/) 和 [Amazon Relational Database Service（Amazon RDS）](https://aws.amazon.com/rds/)实例的启动与停止，帮助您降低运营成本。如果您让所有实例一直以满负荷状态运行，则可能会为那些实际上并未被使用的资源支付费用。开启的实例调度器 AWS 使您能够在不需要实例的时间关闭实例，例如在非工作时间、周末或其他使用率较低的时段。这能够随着时间的推移带来显著的成本节省。

上的 Instance Scheduler AWS 还提供跨账户实例调度、自动标记以及使用命令行界面或维护窗口配置计划或周期的功能。[AWS Systems Manager](https://aws.amazon.com/systems-manager/)这些功能可以帮助您更有效地管理实例，并准确地在不同的项目或团队之间跟踪和分配成本。

## 案例研究
<a name="windows-ec2-schedules-studies"></a>

以一家公司为例，该公司在生产环境 AWS 中使用实例调度器在每天工作时间以外自动停止实例。如果该公司让其所有实例都保持满负荷运行状态，则对于那些仅在正常工作时间内才需要使用的实例，他们能够最高实现 70% 的成本节省。以下图表展示了每周的使用时长是如何从 168 小时减少到 50 小时的。



![\[每周利用率减少图表\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_case_study.png)


再举一个例子。电力公司牙买加公共服务有限公司（JPS）将其数据库迁移到 Amazon RDS。现在，JPS 使用 Amazon EC2 来托管 API 服务并运行其他应用程序。对于 JPS 来说，开启的实例调度器 AWS 成为管理非生产环境的关键工具。JPS 使用了实例调度器 AWS 来降低开发成本，并根据团队需求和工作计划管理 EC2 实例。这帮助 JPS 将成本降低了 40%。有关更多信息，请参阅 AWS 案例研究《[牙买加公共服务高效迁移到云端， AWS 使用实例调度器将成本降低40％》](https://aws.amazon.com/solutions/case-studies/jamaica-public-service-case-study/#:~:text=%E2%80%9CMigrating%20to%20AWS%20has%20minimized,EC2%20and%20Amazon%20RDS%20instances.)。

## 成本优化方案
<a name="windows-ec2-schedules-costopt"></a>

以下示例场景有助于说明在上 AWS使用实例调度器的成本优势。在这种场景下，新加坡一家大型零售公司在 Amazon EC2 上部署了两个 Windows 环境。第一个环境被称为工作负载 A，被营销团队用于在门店营业期间实时分析店内交易情况。第二个环境被称为工作负载 B，为会计团队预留，仅在正常工作时间内工作。目前这两个环境的运行时间表（全天候运行）并不理想，考虑到当前的使用模式，需要进行优化以降低公司的运营成本。

以下图表显示了优化前的每月成本。

![\[优化前的每月成本\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_workloadA_arch.png)


例如，三月份有 31 天，其中 23 天是工作日。如果营销团队使用实例调度器 AWS 并仅在需要时才运行其实例（即每月 321 小时而不是每月 730 小时），则他们每月有可能节省 932.52 美元。这意味着运营成本降低了 56%。会计团队也能获得显著的收益，他们每月的实例使用时间从 730 小时减少到了 230 小时。这导致费用减少了 1140 美元，即 68.5%。该公司每月总共可以节省 2072.52 美元（相当于减少 62%），或每年节省 24870.24 美元。

以下图表显示了优化后的每月成本。

![\[优化后的每月成本\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_workloadB_arch.png)


**注意**  
此示例的定价是在 2023 年 3 月通过使用 [AWS 定价计算器](https://calculator.aws/) 确定的。

## 成本优化建议
<a name="windows-ec2-schedules-costopt-rec"></a>

本部分基于前一部分*成本优化场景*中所介绍的示例场景，说明如何部署和配置 AWS 上的实例调度器。我们建议您采取以下后续步骤，通过在上 AWS使用实例计划程序来优化成本：

1. 启动实例调度器堆栈

1. 配置周期

1. 配置计划

1. 标记 实例。

以下架构图显示了实例调度器堆栈中创建的内容。 AWS 云 

![\[实例调度器堆栈架构\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_cfn_arch.png)


该图表显示了以下工作流步骤：

1.  AWS CloudFormation 模板按照您定义的时间间隔设置 Amazon CloudWatch 事件。此事件调用一个函数。 AWS Lambda 在配置过程中，您可以定义 AWS 区域 和帐户。您还可以定义一个自定义标签，实例调度器 AWS 使用该标签将计划与适用的 Amazon EC2 实例、Amazon RDS 实例和集群关联起来。

1. 计划配置值存储在 Amazon DynamoDB 中，Lambda 函数在每次运行时都会从中获取这些值。然后，您可以将自定义标签应用于适用的实例。

1. 在实例调度器的初始配置过程中，您可以定义一个标签键来识别适用的 Amazon EC2 和 Amazon RDS 实例。创建计划时，您指定的名称将用作标签值，用于标识要应用于已标记资源的计划。

### 启动实例调度器堆栈
<a name="schedules-costopt-launch1"></a>

本节介绍如何在上 AWS启动实例调度程序的 CloudFormation 堆栈。

**注意**  
在上运行实例调度器时 AWS 服务 使用的费用由您承担。 AWS截至 2023 年 1 月，使用该解决方案的默认设置在 `us-east-1` 区域运行的费用约为每月 9.90 美元（这是 Lambda 的费用），如果您的 Lambda 每月使用有免费服务抵扣金可用，则费用会更低。有关更多信息，请参阅 AWS 解决方案库中《[实例计划程序 AWS 实施指南》](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/cost.html)中的 “*成本*” 部分。

要启动实例调度器堆栈，请完成以下步骤。

1. 登录[AWS 管理控制台](https://console.aws.amazon.com/)并选择 [Launch 解决方案](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create?templateURL=https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template)（可下载的模板）以启动`instance-scheduler-on-aws.template` CloudFormation模板。
**注意**  
您也可以[下载模板](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template)作为自己实施的起点。

1. 默认情况下，该模板在美国东部（弗吉尼亚州北部）区域启动。要在其他区域中启动实例调度器，请使用控制台导航栏中的区域选择器。
**注意**  
此示例使用亚太地区（新加坡）区域。

1. 在**创建堆栈**页面的**先决条件 - 准备模板**部分，确认已选中**模板已准备就绪**选项。在**模板来源**部分，确认已选中 **Amazon S3 URL** 选项。

1. 验证 **Amazon S3 URL **文本框中显示了正确的模板 URL，然后选择**下一步**。

1. 在**指定堆栈详细信息**页面上，为您的解决方案堆栈分配一个名称。有关命名字符限制的信息，请参阅 AWS Identity and Access Management ([IAM) 文档中的 IAM 和 STS 限制](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html)。本指南中示例的堆栈名称被称为 `MyInstanceScheduler`。
**注意**  
堆栈名称不能超过 28 个字符。

1. 在**参数**下，检查模板的参数，并根据需要进行修改。

1. 选择 **Next**(下一步)。在**配置堆栈选项**页面上，请选择**下一步**。

1. 在**审核**页面上，审核并确认设置。选中确认模板将创建 IAM 资源的复选框。

1. 选择**创建**以部署堆栈。

### 配置周期
<a name="schedules-costopt-periods2"></a>

部署 CloudFormation 模板后，该解决方案会创建一个 DynamoDB 表，其中包含示例周期规则和计划，您可以将其用作创建自己的自定义周期规则和计划的参考。有关周期配置的示例，请参阅 AWS 文档中的实例调度器中的[示例计划](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/sample-schedules.html)。

要完成此场景的步骤，必须生成与每个工作负载相对应并满足其特定需求的周期。例如：

```
Period 1 (Workload A):
    Name: retail-hours
    Days: Monday to Sunday
    Hours: 1100 - 2300
Period 2 (Workload B):
    Name: office-hours
    Days: Monday to Friday
    Hours: 0800 - 1800
```

要配置周期，请完成以下步骤：

1. 登录 D [ynamoDB](https://console.aws.amazon.com/dynamodb/home) 控制台，确保您所在的区域与启动实例计划程序模板 CloudFormation 的区域相同。 AWS

1. 在导航窗格中，选择**表**，然后选择名为的表**ConfigTable**。

1. 选择**浏览表****项目**。

1. 要创建办公时间时段，请为**办公时间**项选择**时段**。

1. 在**编辑项目**页面上，将 **begintime** 的值更改为 **0800**，将 **endtime** 的值更改为 **1800**。将工作日的默认值保持不变。
**注意**  
**begintime** 和 **endtime** 值决定何时启动和停止实例，而**工作日**值则决定该计划适用于一周中的哪几天（本示例中为星期一至星期五）。

1. 选择**保存更改**。

1. 要复制**办公时间**时段并使用它来创建新的零售时间段，请为**办公时间**项选择**时段**。然后，从**操作**菜单中选择**复制项目**。

1. 修改属性以满足您的需求。以下属性用于满足示例场景的要求：

   ```
   type: period
   name: retail-hours
   begintime: 11:00
   description: Retail hours
   endtime: 23:00
   weekdays: mon-sun
   ```

1. 选择**创建项目**。

1. 在 Dynam **ConfigTable**oDB 中，确定项目列表中列出的您刚刚创建的两个时段。

### 配置计划
<a name="schedules-costopt-schedules3"></a>

在 “开启实例调度器” 的上下文中 AWS，计划是指应用一个或多个时段以及相关时区。随后，这些时间表会被作为标签分配到您的实例中。本部分将向您展示如何创建两个计划（如下所示），以适应两个示例工作负载所呈现出的不同时间模式，然后将这些计划与您在上一部分中创建的时段进行关联。

```
Schedule 1:
    Name: singapore-office-hours
    Period: office-hours
    Timezone: Asia/Singapore
Schedule 2:
    Name: singapore-retail-hours
    Period: retail-hours
    Timezone: Asia/Singapore
```

要创建和配置计划，请完成以下步骤：

1. 登录 D [ynamoDB](https://console.aws.amazon.com/dynamodb/home) 控制台，确保您所在的区域与启动实例计划程序模板 CloudFormation 的区域相同。 AWS

1. 在导航窗格中，选择**表**，然后选择名为的表**ConfigTable**。

1. 选择**浏览表****项目**。

1. 要复制英国办公时间表并使用它为您的办公时间（本例为新加坡办公时间）创建新的时间表，请为该**uk-office-hours **项目选择**时间表**。然后，从**操作**菜单中选择**复制项目**。

1. 修改属性以满足您的需求。以下属性用于满足示例场景的要求：

   ```
   type: schedule
   name: singapore-office-hours
   description: Office hours in Singapore
   periods: office-hours
   timezone: Asia/Singapore
   ```

1. 选择**创建项目**。

1. 重复步骤 4–6，以使用以下属性值为新加坡零售时间创建计划：

   ```
   type: schedule
   name: singapore-retail-hours
   description: Retail hours in Singapore
   periods: retail-hours
   timezone: Asia/Singapore
   ```

1. 在 Dynam **ConfigTable**oDB 中，确定您创建的两个计划和两个周期。

### 标记 实例。
<a name="schedules-costopt-tag4"></a>

建立计划后，必须使用标签将计划分配给您要使用的特定实例。您可以在 [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html) 中使用标签编辑器生成标签并将其分配给您的 Amazon EC2 实例。

1. 登录[AWS 管理控制台](https://console.aws.amazon.com/)并确保您位于之前启动 CloudFormation 模板的同一区域。

1. 打开[资源组控制台](https://console.aws.amazon.com/resource-groups)。在导航窗格中，展开**标记**，然后选择**标签编辑器**。

1. 在**查找要标记的资源**部分中，对于**区域**，选择您的区域。对于**资源类型**，请选择 Amazon EC2 或 Amazon RDS。此场景主要针对工作负载 A 中的 Amazon EC2 实例。营销团队正在新加坡区域使用工作负载 A。用于此工作负载的资源已经标记有**部门**键和**营销**值。您可以使用此标签来搜索实例。

1. 选择**搜索资源**。

1. 从搜索结果列表中选择要包含在计划中的实例，然后选择**管理所选资源的标签**。

1. 在**编辑所有选定资源的标签**部分中，选择**添加标签**，以将实例调度器计划标签添加到您的 EC2 实例。您可以使用与 **schedulea** （之前在 DynamoDB 中创建）匹配的标签键和值。

1. 对于**标签键**，请添加**计划**。在 “**标签值******” 中，输入**singapore-retail-hours**。

1. 选择**检查并应用标签更改**。

1. 要将标签应用于您选择的所有 EC2 实例，请选择**将更改应用于所有选定实例**。

1. 对于要应用的任何其他计划，请重复步骤 3–9。

### 验证结果
<a name="schedules-costopt-validate5"></a>

我们建议您使用[AWS Cost Explorer](https://www.youtube.com/watch?v=UfPqrkoUFiQ)来衡量在上 AWS使用实例调度程序的成本收益。您可以使用 Cost Explorer 成本管理服务来执行以下操作：
+ 查看和分析与您的 EC2 实例相关的成本，包括由实例调度器管理的实例。
+ 按标签筛选您的 Cost Explorer 成本管理服务视图，以便您能够专注于特定的工作负载，并详细了解通过使用实例调度器所实现的成本节省情况。
+ 深入了解使用实例调度器的财务影响。
+ 找出进一步优化成本的机会，并做出以数据为依据的决策以优化 AWS 支出。

以下图表展示了在使用实例调度器进行优化前的七天时间段（周一至周日）内，工作负载 A 和工作负载 B 的运行成本情况。

**工作负载 A 和 B 的总费用之和**

![\[工作负载 A 和 B 的总费用之和\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_ab.png)


**工作负载 A 费用**

![\[工作负载 A 的费用\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_a.png)


**工作负载 B 费用**

![\[工作负载 B 的费用\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_b.png)


在此场景中，Cost Explorer 成本管理服务显示了通过实施 AWS上的实例调度器而降低的成本。以下图表描述了优化后七天（星期一至星期日）内工作负载 A 和工作负载 B 的运行成本情况。

**工作负载 A 和 B 的总费用之和**

![\[工作负载 A 和 B 的总费用之和\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_ab.png)


**工作负载 A 费用**

![\[工作负载 A 的费用\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_a.png)


**工作负载 B 费用**

![\[工作负载 B 的费用\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_b.png)


## 其他资源
<a name="windows-ec2-schedules-resources"></a>
+ [自动启动和停止 AWS 实例](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/solution-overview.html)（ AWS 文档中的实例调度器）
+ [回归基础知识：使用实例计划程序控制 Amazon EC2 和 Amazon RDS 资源成本](https://www.youtube.com/watch?v=UsC5ZNcZl9k) () YouTube
+ 为@@ [AWS 资源添加标签](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)（标记 AWS 资源用户指南）
+ [使用 AWS Cost Explorer（AWS 账单与成本管理 文档）分析您的成本](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html)