| « PreviousNext » | |
![]() ![]() ![]() | Did this page help you? Yes | No | Tell us about it... |
This section contains a number of template snippets specific to Auto Scaling.
Topics
This example shows an Auto Scaling AWS::AutoScaling::LaunchConfiguration resource. The SecurityGroups property specifies both an AWS::EC2::SecurityGroup resource named myEC2SecurityGroup and an existing EC2 security group named myExistingEC2SecurityGroup. The BlockDeviceMappings property lists two devices: a 50 gigabyte EBS volume mapped to /dev/sdk and a virtual device ephemeral0 mapped to /dev/sdc.
"SimpleConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"ImageId" : "ami-6411e20d",
"SecurityGroups" : [ { "Ref" : "myEC2SecurityGroup" }, "myExistingEC2SecurityGroup" ],
"InstanceType" : "m1.small",
"BlockDeviceMappings" : [ {
"DeviceName" : "/dev/sdk",
"Ebs" : {"VolumeSize" : "50"}
}, {
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
} ]
}
},This example shows an Auto Scaling AWS::AutoScaling::AutoScalingGroup resource. The AvailabilityZones property specifies the
availability zones where the auto-scaling group's EC2 instances will be created. In this example, the Fn::GetAZs function call {
"Fn::GetAZs" : "" } specifies all availability zones for the region in which the stack is created.
The LoadBalancerNames property lists the LoadBalancers used to route traffic to the Auto Scaling group. In
this example, one LoadBalancer is specified, the AWS::ElasticLoadBalancing::LoadBalancer resource LB.
"MyServerGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : { "Fn::GetAZs" : ""},
"LaunchConfigurationName" : { "Ref" : "SimpleConfig" },
"MinSize" : "1",
"MaxSize" : "3",
"LoadBalancerNames" : [ { "Ref" : "LB" } ]
}
},This example shows an AWS::AutoScaling::ScalingPolicy
resource that scales up the Auto Scaling group asGroup. The AdjustmentType property specifies
ChangeInCapacity, which means that the ScalingAdjustment represents the number of
instances to add (if ScalingAdjustment is positive) or delete (if it is negative). In
this example, ScalingAdjustment is 1; therefore, the policy increments the number of
EC2 instances in the group by 1 when the policy is executed.
The AWS::CloudWatch::Alarm resource CPUAlarmHigh specifies
the scaling policy ScaleUpPolicy as the action to execute when the alarm is in an
ALARM state (AlarmActions).
"ScaleUpPolicy" : {
"Type" : "AWS::AutoScaling::ScalingPolicy",
"Properties" : {
"AdjustmentType" : "ChangeInCapacity",
"AutoScalingGroupName" : { "Ref" : "asGroup" },
"Cooldown" : "1",
"ScalingAdjustment" : "1"
}
},
"CPUAlarmHigh": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"EvaluationPeriods": "1",
"Statistic": "Average",
"Threshold": "10",
"AlarmDescription": "Alarm if CPU too high or metric disappears indicating instance is down",
"Period": "60",
"AlarmActions": [ { "Ref": "ScaleUpPolicy" } ],
"Namespace": "AWS/EC2",
"Dimensions": [ {
"Name": "AutoScalingGroupName",
"Value": { "Ref": "asGroup" }
} ],
"ComparisonOperator": "GreaterThanThreshold",
"MetricName": "CPUUtilization"
}
}, This example shows an AWS::AutoScaling::AutoScalingGroup
resource that sends Amazon SNS notifications when the specified events take place. The
NotificationConfiguration property specifies the SNS topic where AWS CloudFormation sends a
notification and the events that will cause AWS CloudFormation to send notifications. When the events specified by
NotificationTypes occur, AWS CloudFormation will send a notification to the SNS topic specified by
TopicARN. In this example, AWS CloudFormation sends a notification to the SNS topic topic1 when the
autoscaling:EC2_INSTANCE_LAUNCH and
autoscaling:EC2_INSTANCE_LAUNCH_ERROR events occur.
"MyAsGroupWithNotification" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : { "Ref" : "azList" },
"LaunchConfigurationName" : { "Ref" : "myLCOne" },
"MinSize" : "0",
"MaxSize" : "2",
"DesiredCapacity" : "1",
"NotificationConfiguration" : {
"TopicARN" : { "Ref" : "topic1" },
"NotificationTypes" : [
"autoscaling:EC2_INSTANCE_LAUNCH",
"autoscaling:EC2_INSTANCE_LAUNCH_ERROR",
"autoscaling:EC2_INSTANCE_TERMINATE",
"autoscaling:EC2_INSTANCE_TERMINATE_ERROR"
]
}
}
} This example shows an Auto Scaling trigger for the MyServerGroup AWS::AutoScaling::AutoScalingGroup resource.
"MyTrigger" : {
"Type" : "AWS::AutoScaling::Trigger",
"Properties" : {
"MetricName" : "CPUUtilization",
"Namespace" : "AWS/EC2",
"Statistic" : "Average",
"Period" : "300",
"UpperBreachScaleIncrement" : "1",
"LowerBreachScaleIncrement" : "-1",
"AutoScalingGroupName" : { "Ref" : "MyServerGroup" },
"BreachDuration" : "600",
"UpperThreshold" : "90",
"LowerThreshold" : "75",
"Dimensions" : [ {
"Name" : "AutoScalingGroupName",
"Value" : { "Ref" : "MyServerGroup" }
} ]
}
}This example shows how to use an UpdatePolicy with an auto-scaling group.
"ASG1" : {
"UpdatePolicy" : {
"AutoScalingRollingUpdate" : {
"MinInstancesInService" : "1",
"MaxBatchSize" : "1",
"PauseTime" : "PT12M5S"
}
},
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : { "Fn::GetAZs" : { "Ref" : "AWS::Region" } },
"LaunchConfigurationName" : { "Ref" : "ASLC" },
"MaxSize" : "3",
"MinSize" : "1"
}
}