示例计划 - AWS 实例计划程序

示例计划

AWS 实例计划程序可让您自动启动和停止 Amazon Elastic Compute Cloud(Amazon EC2)与 Amazon Relational Database Service(Amazon RDS)实例。以下部分提供了一些示例计划,这些计划可进行调整以用于多种常见使用案例。

标准的 9-5 工作时段

此计划展示了如何在伦敦的工作日上午 9 点至下午 5 点运行实例。

时段

此时段将在工作日(周一至周五)上午 9 点启动实例,并在下午 5 点停止实例。

字段 类型

begintime

String

09:00

endtime

String

16:59

name

String

weekdays-9-5

weekdays

StringSet

mon-fri

计划

计划名称提供了必须应用于实例的标签值以及将使用的时区。

字段 类型

name

String

london-working-hours

periods

StringSet

weekdays-9-5

timezone

String

Europe/London

实例标签

要将此计划应用于实例,您必须为实例添加 Schedule=london-working-hours 标签。如果您在 AWS CloudFormation 实例计划程序标签名称参数中更改了默认标签名称,则您的标签也会发生相应的变化。例如,如果您输入 Sked 作为标签名称,则您的标签将是 Sked=london-working-hours。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的标记资源

计划程序 CLI

要使用实例计划程序 CLI 配置上述计划,请使用以下命令:

scheduler-cli create-period --stack <stackname> --name weekdays-9-5 --weekdays mon-fri --begintime 9:00 --endtime 16:59

scheduler-cli create-schedule --stack <stackname> --name london-working-hours --periods weekdays-9-5 --timezone Europe/London

Europe/London

自定义资源

以下 CloudFormation 模板将使用计划自定义资源创建上述计划。

要部署此模板,您需要提供可在 AWS CloudFormation 控制台中找到的 ServiceInstanceScheduleServiceToken ARN,方法是选择之前部署的实例计划程序中心堆栈,然后选择输出

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  LondonWorkingWeek:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      NoStackPrefix: 'True'
      Name: london-working-hours
      Description: run instances from 9am to 5pm in London on weekdays
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN
      Timezone: Europe/London
      Periods:
     - Description: 9am to 5pm on weekdays
        BeginTime: '09:00'
        EndTime: '16:59'
        WeekDays: mon-fri

在下午 5 点之后停止实例

实例可在一天中的任何时间随意启动,此计划将确保在每天下午 5 点(ET)自动向实例发送停止命令。

时段

此时段将在每天下午 5 点停止实例。

字段 类型

endtime

String

16:59

name

String

stop-at-5

计划

计划名称提供了必须应用于实例的标签值以及将使用的时区。

字段

name

String

stop-at-5-new-york

periods

StringSet

stop-at-5

timezone

String

America/New York

实例标签

要将此计划应用于实例,您必须为实例添加 Schedule=stop-at-5-new-york 标签。如果您在 AWS CloudFormation 实例计划程序标签名称参数中更改了默认标签名称,则您的标签也会发生相应的变化。例如,如果您输入 Sked 作为标签名称,则您的标签将是 Sked=stop-at-5-new-york。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的标记资源

计划程序 CLI

要使用实例计划程序 CLI 配置上述计划,请使用以下命令:

scheduler-cli create-period --stack <stackname> --name stop-at-5 --endtime 16:59

scheduler-cli create-schedule --stack <stackname> --name stop-at-5-new-york --periods stop-at-5 --timezone America/New_York

自定义资源

以下 CloudFormation 模板将使用计划自定义资源创建上述计划。

要部署此模板,您需要提供可在 AWS CloudFormation 控制台中找到的 ServiceInstanceScheduleServiceToken ARN,方法是单击之前部署的实例计划程序中心堆栈,然后选择输出

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  StopAfter5:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      NoStackPrefix: 'True'
      Name: stop-at-5-new-york
      Description: stop instances at 5pm ET every day
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN
      Timezone: America/New_York
      Periods:
      - Description: stop at 5pm
        EndTime: '16:59'

在周末停止实例

此计划展示了如何让实例从星期一上午 9 点(ET)运行至星期五下午 5 点(ET)。由于星期一和星期五并非完整天数,该计划包含三个时段以分别对应星期一、星期二至星期四、星期五。

时段

第一个时段会在星期一上午 9 点启动已标记的实例,并在午夜停止实例。此时段包含以下字段和值。

字段 类型

begintime

String

09:00

endtime

String

23:59

name

String

mon-start-9am

weekdays

StringSet

mon

第二个时段会让已标记的实例在周二至周四全天运行。此时段包含以下字段和值。

字段

name

String

tue-thu-full-day

weekdays

StringSet

tue-thu

第三个时段会在星期五下午 5 点停止已标记的实例。此时段包含以下字段和值。

字段

begintime

String

00:00

endtime

String

16:59

name

String

fri-stop-5pm

weekdays

StringSet

fri

计划

此计划将这三个时段整合,形成适用于已标记实例的计划。该计划包含以下字段和值。

字段

name

String

mon-9am-fri-5pm

periods

StringSet

mon-start-9am、tue-thu-full-day、fri-stop-5pm

timezone

String

America/New_York

实例标签

要将此计划应用于实例,您必须为实例添加 Schedule=mon-9am-fri-5pm 标签。请注意,如果您在 AWS CloudFormation 实例计划程序标签名称参数中更改了默认标签名称,则您的标签也会发生相应的变化。例如,如果您输入 Sked 作为标签名称,则您的标签将是 Sked=mon-9am-fri-5pm。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的标记资源

计划程序 CLI

要使用实例计划程序 CLI 配置上述计划,请使用以下命令:

scheduler-cli create-period --stack <stackname> --name
mon-start-9am --weekdays mon --begintime 9:00 --endtime 23:59
scheduler-cli create-period --stack <stackname> --name
tue-thu-full-day --weekdays tue-thu
scheduler-cli create-period --stack <stackname> --namefri-stop-5pm --weekdays fri --begintime 0:00 --endtime 17:00

scheduler-cli create-schedule --stack <stackname> --name
mon-9am-fri-5pm --periods
mon-start-9am,tue-thu-full-day,fri-stop-5pm -timezone
America/New_York

自定义资源

以下 CloudFormation 模板将使用计划自定义资源创建上述计划。

要部署此模板,您需要提供可在 AWS CloudFormation 控制台中找到的 ServiceInstanceScheduleServiceToken ARN,方法是选择之前部署的实例计划程序中心堆栈,然后选择输出

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  StopOnWeekends:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      NoStackPrefix: 'True'
      Name: mon-9am-fri-5pm
      Description: start instances at 9am on monday and stop them at 5pm on friday
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN
      Timezone: America/New_York
      Periods:
      - Description: 9am monday start
        BeginTime: '09:00'
        EndTime: '23:59'
        WeekDays: mon
      - Description: all day tuesday-thursday
        WeekDays: tue-thu
      - Description: 5pm friday stop
        BeginTime: '00:00'
        EndTime: '16:59'
        WeekDays: fri

解决方案资源

以下资源作为 AWS 实例计划程序堆栈的一部分创建。

资源名称 类型 描述

Main

AWS::Lambda::Function

AWS 实例计划程序 Lambda 函数。

计划程序配置帮助程序

Custom::ServiceSetup

将全局配置设置存储在 Amazon DynamoDB 中。

计划程序调用权限

AWS::Lambda::Permission

允许 Amazon CloudWatch Events 调用实例计划程序的 AWS Lambda 函数。

计划程序日志

AWS::Logs::LogGroup

实例计划程序的 CloudWatch 日志组。

计划程序策略

AWS::IAM::Policy

允许计划程序执行启动和停止操作、更改 Amazon EC2 实例属性、设置标签和访问计划程序资源的策略。

计划程序规则

AWS::Events::Rule

用于调用计划程序的 Lambda 函数的 Amazon EventBridge 事件规则。

配置指标事件规则

AWS::Events::Rule

用于定期调用配置描述匿名指标函数的 Amazon EventBridge 事件规则。当匿名指标处于禁用状态时,此事件规则也会被禁用。

状态表

AWS::DynamamoDB::Table

用于存储实例上次所需状态的 DynamoDB 表。

配置表

AWS::DynamamoDB::Table

用于存储全局配置、计划和时段数据的 DynamoDB 表。

实例计划程序 SNS 主题

AWS::SNS::Topic

用于向订阅的电子邮件地址发送警告和错误消息。