AWS::AutoScaling::ScheduledAction - AWS CloudFormation

AWS::AutoScaling::ScheduledAction

The AWS::AutoScaling::ScheduledAction resource specifies an Amazon EC2 Auto Scaling scheduled action so that the Auto Scaling group can change the number of instances available for your application in response to predictable load changes.

When you update a stack with an Auto Scaling group and scheduled action, CloudFormation always sets the min size, max size, and desired capacity properties of your group to the values that are defined in the AWS::AutoScaling::AutoScalingGroup section of your template. However, you might not want CloudFormation to do that when you have a scheduled action in effect. You can use an UpdatePolicy attribute to prevent CloudFormation from changing the min size, max size, or desired capacity property values during a stack update unless you modified the individual values in your template. If you have rolling updates enabled, before you can update the Auto Scaling group, you must suspend scheduled actions by specifying an UpdatePolicy attribute for the Auto Scaling group. You can find a sample update policy for rolling updates in Auto scaling template snippets.

For more information, see Scheduled scaling and Suspending and resuming scaling processes in the Amazon EC2 Auto Scaling User Guide.

Syntax

To declare this entity in your AWS CloudFormation template, use the following syntax:

JSON

{ "Type" : "AWS::AutoScaling::ScheduledAction", "Properties" : { "AutoScalingGroupName" : String, "DesiredCapacity" : Integer, "EndTime" : String, "MaxSize" : Integer, "MinSize" : Integer, "Recurrence" : String, "StartTime" : String, "TimeZone" : String } }

YAML

Type: AWS::AutoScaling::ScheduledAction Properties: AutoScalingGroupName: String DesiredCapacity: Integer EndTime: String MaxSize: Integer MinSize: Integer Recurrence: String StartTime: String TimeZone: String

Properties

AutoScalingGroupName

The name of the Auto Scaling group.

Required: Yes

Type: String

Minimum: 1

Maximum: 255

Pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

DesiredCapacity

The desired capacity is the initial capacity of the Auto Scaling group after the scheduled action runs and the capacity it attempts to maintain. It can scale beyond this capacity if you add more scaling conditions.

You must specify at least one of the following properties: MaxSize, MinSize, or DesiredCapacity.

Required: Conditional

Type: Integer

Update requires: No interruption

EndTime

The date and time for the recurring schedule to end, in UTC. For example, "2021-06-01T00:00:00Z".

Required: No

Type: String

Update requires: No interruption

MaxSize

The maximum size of the Auto Scaling group.

You must specify at least one of the following properties: MaxSize, MinSize, or DesiredCapacity.

Required: Conditional

Type: Integer

Update requires: No interruption

MinSize

The minimum size of the Auto Scaling group.

You must specify at least one of the following properties: MaxSize, MinSize, or DesiredCapacity.

Required: Conditional

Type: Integer

Update requires: No interruption

Recurrence

The recurring schedule for this action. This format consists of five fields separated by white spaces: [Minute] [Hour] [Day_of_Month] [Month_of_Year] [Day_of_Week]. For more information about this format, see Crontab.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action starts and stops.

Cron expressions use Universal Coordinated Time (UTC) by default.

Required: No

Type: String

Minimum: 1

Maximum: 255

Pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: No interruption

StartTime

The date and time for this action to start, in YYYY-MM-DDThh:mm:ssZ format in UTC/GMT only. For example, "2021-06-01T00:00:00Z".

If you specify Recurrence and StartTime, Amazon EC2 Auto Scaling performs the action at this time, and then performs the action based on the specified recurrence.

Required: No

Type: String

Update requires: No interruption

TimeZone

Specifies the time zone for a cron expression. If a time zone is not provided, UTC is used by default.

Valid values are the canonical names of the IANA time zones, derived from the IANA Time Zone Database (such as Etc/GMT+9 or Pacific/Tahiti). For more information, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.

Required: No

Type: String

Minimum: 1

Maximum: 255

Pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: No interruption

Return values

Ref

When the logical ID of this resource is provided to the Ref intrinsic function, Ref returns the resource name. For example: mystack-myscheduledaction-NT5EUXTNTXXD.

For more information about using the Ref function, see Ref.

Examples

The following examples schedule scaling actions for an Auto Scaling group.

Scheduled actions that run on a recurring schedule

The following template snippet includes two scheduled actions that scale the number of instances in an Auto Scaling group. The ScheduledActionOut action starts at 7 AM every day and sets the Auto Scaling group to a minimum of five Amazon EC2 instances with a maximum of 10. The ScheduledActionIn action starts at 7 PM every day and sets the Auto Scaling group to a minimum and maximum of one Amazon EC2 instance. The time zone is not provided. As a result, these scheduled actions will recur in UTC time.

JSON

{ "Resources":{ "ScheduledActionOut":{ "Type":"AWS::AutoScaling::ScheduledAction", "Properties":{ "AutoScalingGroupName":{ "Ref":"myASG" }, "MaxSize":"10", "MinSize":"5", "Recurrence":"0 7 * * *" } }, "ScheduledActionIn":{ "Type":"AWS::AutoScaling::ScheduledAction", "Properties":{ "AutoScalingGroupName":{ "Ref":"myASG" }, "MaxSize":"1", "MinSize":"1", "Recurrence":"0 19 * * *" } } } }

YAML

--- Resources: ScheduledActionOut: Type: AWS::AutoScaling::ScheduledAction Properties: AutoScalingGroupName: !Ref myASG MaxSize: 10 MinSize: 5 Recurrence: "0 7 * * *" ScheduledActionIn: Type: AWS::AutoScaling::ScheduledAction Properties: AutoScalingGroupName: !Ref myASG MaxSize: 1 MinSize: 1 Recurrence: "0 19 * * *"

Scheduled scaling action that occurs only once

The following template snippet includes a one-time scheduled action. At the date and time specified for StartTime (4:00 PM UTC on March 31, 2021), if the group currently has more than 1 instance, it scales in to 1 instance. If the group currently has no instances, it scales out to 1 instance.

JSON

{ "Resources":{ "OneTimeScheduledAction":{ "Type":"AWS::AutoScaling::ScheduledAction", "Properties":{ "AutoScalingGroupName":{ "Ref":"myASG" }, "DesiredCapacity":"1", "StartTime":"2021-03-31T16:00:00Z" } } } }

YAML

--- Resources: OneTimeScheduledAction: Type: 'AWS::AutoScaling::ScheduledAction' Properties: AutoScalingGroupName: !Ref myASG DesiredCapacity: '1' StartTime: '2021-03-31T16:00:00Z'