如何使用 AWS Instance Scheduler 停止和启动我的实例?

上次更新时间:2020 年 1 月 13 日

我希望在预设的时间停止和启动实例,从而降低我的 Amazon Elastic Compute Cloud (Amazon EC2) 使用量。

简短描述

您可以使用 AWS Instance Scheduler 和 AWS CloudFormation 自动化模板根据计划停止和启动实例。有关更多信息,请参阅自动部署

重要提示:如果您将 AWS Instance Scheduler 用于使用加密的 Amazon Elastic Block Store (Amazon EBS) 的 Amazon EC2 实例,您的实例不会启动。要启动您的实例,您必须向 AWS Instance Scheduler 授予具有对您的 Amazon EBS 卷进行加密或解密的密钥策略的密钥用户角色。有关更多信息,请参阅 在 AWS KMS 中使用 IAM 策略。您还必须向 AWS Key Management Service (Amazon KMS) 密钥添加密钥策略,以允许该密钥用户角色使用此密钥。有关更多信息,请参阅在 AWS KMS 中使用密钥策略

解决方法

在开始之前,请按 Instance Scheduler 命令行界面 (CLI) 中所述方法进行设置。

使用 AWS Instance Scheduler 模板创建 AWS CloudFormation 堆栈

该堆栈会部署一个 AWS Lambda 函数、一个 Amazon DynamoDB 表、一个 Amazon CloudWatch 事件和 CloudWatch 自定义指标。

1.    打开 AWS 管理控制台

2.    要使用 AWS Instance Scheduler 模板打开 AWS CloudFormation,请转到步骤 1。启动 Instance Scheduler 堆栈页面,然后选择启动解决方案

注意:默认情况下,模板在美国东部(弗吉尼亚北部)区域中启动。

3.    在导航栏中,选择您要在其中启动堆栈模板的区域,然后选择下一步

4.    在堆栈名称中输入 Ec2instanceScheduler

5.    在频率中选择运行计划程序的频率(以分钟为单位,比如 5 分钟)。

注意:频率是指您希望 Amazon CloudWatch Events 为 AWS Instance Scheduler 触发 Lambda 函数的时间间隔。如果您拥有大量的实例,请尽可能使用最高频率,以避免限制。如果现有频率不足以满足您的需求,您之后可以调整 Frequency 属性。

6.    对于 Enable CloudWatch Logs (启用 CloudWatch Logs),选择

7.    对于 Started tags (已启动标签),请输入 state=started

8.    对于 Stopped tags (已停止标签),请输入 state=stopped

9.    选择 Next

10.    在选项页面中,选择 下一步

11.    检查您的设置,然后选择我确认,AWS CloudFormation 可能创建 IAM 资源

12.    选择创建

创建基于计划启动实例的周期

1.    要创建周期,请连接到 Instance Scheduler CLI,然后运行以下命令:

$ scheduler-cli create-period --stack Ec2instanceScheduler --region us-west-2 --name firstdayofmonth --begintime 06:00 --endtime 07:00 --monthdays 1

注意:要创建周期,您还可以使用 DynamoDB 控制台或 AWS CloudFormation 自定义资源。将 us-west-2 替换为您自己的 AWS 区域。 有关更多信息,请参阅启动和停止时间

2.    打开 DynamoDB 控制台

3.    选择,然后选择配置表。

注意:AWS Instance Scheduler 模板会自动创建两个 DynamoDB 表:状态表和配置表。状态表用于存储被模板停止和启动的实例状态。您可以在配置表中指定所需的周期和计划。

4.    选择项目视图,然后确认 firstdayofmonth 周期显示在表中。

创建周期计划

1.    要创建计划,请连接到 Instance Scheduler CLI,然后运行以下命令:

$ scheduler-cli create-schedule --stack Ec2instanceScheduler --name dayone --region us-west-2 --periods firstdayofmonth --timezone UTC

2.    打开 DynamoDB 控制台

3.    选择,然后选择配置表。

4.    选择项目视图,然后确认 dayone 计划显示在配置表中。

为计划添加标签和执行测试

要跟踪实例以进行测试,请为实例应用一个自定义标签。

注意:停止您正在测试的实例,以便您可以测试预定义的计划(例如,名为 running 的计划)。

1.    打开 Amazon EC2 控制台

2.    选择正在运行的实例,然后选择要添加标签的实例。

3.    选择标签视图,然后选择添加/编辑标签

4.    选择创建标签

5.    在 Key 中,输入 Schedule

6.    在 Value 中,输入 running

7.    选择保存

8.    刷新 Amazon EC2 控制台,然后等待 Lambda 函数触发。

注意:如果已触发 Lambda 函数并且运行没有错误,则实例状态会显示为正在运行,具体取决于您所测试的计划。在 CloudWatch 控制台中,您可以检查 Lambda 指标调用情况和错误

9.    打开 DynamoDB 控制台

10.    选择,然后选择状态表。

11.    选择项目视图,然后确认带标签的实例已经启动。

注意:状态数据存储在状态表中。

根据您使用 Lambda 函数的频率和时长,以及您创建的任何 DynamoDB 表或 CloudWatch 事件规则,您可能要支付额外费用


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?