Last active
July 5, 2016 14:36
-
-
Save toritori0318/6329255 to your computer and use it in GitHub Desktop.
AutoScaleのCloudFormationのサンプル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"AWSTemplateFormatVersion" : "2010-09-09", | |
"Description" : "AWS CloudFormation Sample Template AutoScalingKeepAtNSample: Create a load balanced, Auto Scaled sample website. This example creates an Auto Scaling group behind a load balancer with a simple health check using a basic getting start AMI that has a simple Apache Web Server-based PHP page. The web site is available on port 80, however, the instances can be configured to listen on any port (8888 by default). **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", | |
"Parameters" : { | |
"InstanceType" : { | |
"Description" : "WebServer EC2 instance type", | |
"Type" : "String", | |
"Default" : "m1.small", | |
"AllowedValues" : [ "t1.micro","m1.small","m1.medium","m1.large","m1.xlarge","m2.xlarge","m2.2xlarge","m2.4xlarge","m3.xlarge","m3.2xlarge","c1.medium","c1.xlarge","cc1.4xlarge","cc2.8xlarge","cg1.4xlarge"], | |
"ConstraintDescription" : "must be a valid EC2 instance type." | |
}, | |
"WebServerPort" : { | |
"Description" : "TCP/IP port of the web server", | |
"Type" : "String", | |
"Default" : "80" | |
}, | |
"KeyName" : { | |
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances", | |
"Type" : "String", | |
"Default" : "hogekey" | |
}, | |
"ASMinCount": { | |
"Description": "AutoScaling Min Count", | |
"Type": "Number", | |
"Default": "1" | |
}, | |
"ASMaxCount": { | |
"Description": "AutoScaling Max Count", | |
"Type": "Number", | |
"Default": "4" | |
}, | |
"ASDesiredCapacity": { | |
"Description": "AutoScaling Desired Capacity", | |
"Type": "Number", | |
"Default": "1" | |
}, | |
"ASAMI": { | |
"Description": "The EC2 ImageId for the Web Server", | |
"Type": "String", | |
"Default": "ami-xxxxxxxxx" | |
} | |
}, | |
"Resources" : { | |
"WebServerGroup": { | |
"Type": "AWS::AutoScaling::AutoScalingGroup", | |
"UpdatePolicy" : { | |
"AutoScalingRollingUpdate" : { | |
"MaxBatchSize" : "1", | |
"MinInstancesInService" : "1", | |
"PauseTime" : "PT0S" | |
} | |
}, | |
"Properties": { | |
"AvailabilityZones": { | |
"Fn::GetAZs": "" | |
}, | |
"LaunchConfigurationName": { | |
"Ref": "LaunchConfig" | |
}, | |
"MinSize": { | |
"Ref": "ASMinCount" | |
}, | |
"MaxSize": { | |
"Ref": "ASMaxCount" | |
}, | |
"DesiredCapacity": { | |
"Ref": "ASDesiredCapacity" | |
}, | |
"LoadBalancerNames": [ | |
{ | |
"Ref": "ElasticLoadBalancer" | |
} | |
] | |
} | |
}, | |
"LaunchConfig": { | |
"Type": "AWS::AutoScaling::LaunchConfiguration", | |
"Properties": { | |
"KeyName": { | |
"Ref": "KeyName" | |
}, | |
"ImageId": { | |
"Ref": "ASAMI" | |
}, | |
"SecurityGroups": ["sg-base","sg-web"], | |
"InstanceType": { | |
"Ref": "InstanceType" | |
} | |
} | |
}, | |
"WebServerScaleUpPolicy": { | |
"Type": "AWS::AutoScaling::ScalingPolicy", | |
"Properties": { | |
"AdjustmentType": "ChangeInCapacity", | |
"AutoScalingGroupName": { | |
"Ref": "WebServerGroup" | |
}, | |
"Cooldown": "60", | |
"ScalingAdjustment": "1" | |
} | |
}, | |
"WebServerScaleDownPolicy": { | |
"Type": "AWS::AutoScaling::ScalingPolicy", | |
"Properties": { | |
"AdjustmentType": "ChangeInCapacity", | |
"AutoScalingGroupName": { | |
"Ref": "WebServerGroup" | |
}, | |
"Cooldown": "60", | |
"ScalingAdjustment": "-1" | |
} | |
}, | |
"CPUAlarmHigh": { | |
"Type": "AWS::CloudWatch::Alarm", | |
"Properties": { | |
"AlarmDescription": "Scale-up if CPU > 90% for 10 minutes", | |
"MetricName": "CPUUtilization", | |
"Namespace": "AWS/EC2", | |
"Statistic": "Average", | |
"Period": "300", | |
"EvaluationPeriods": "2", | |
"Threshold": "90", | |
"AlarmActions": [ | |
{ | |
"Ref": "WebServerScaleUpPolicy" | |
} | |
], | |
"Dimensions": [ | |
{ | |
"Name": "AutoScalingGroupName", | |
"Value": { | |
"Ref": "WebServerGroup" | |
} | |
} | |
], | |
"ComparisonOperator": "GreaterThanThreshold" | |
} | |
}, | |
"CPUAlarmLow": { | |
"Type": "AWS::CloudWatch::Alarm", | |
"Properties": { | |
"AlarmDescription": "Scale-down if CPU < 70% for 10 minutes", | |
"MetricName": "CPUUtilization", | |
"Namespace": "AWS/EC2", | |
"Statistic": "Average", | |
"Period": "300", | |
"EvaluationPeriods": "2", | |
"Threshold": "70", | |
"AlarmActions": [ | |
{ | |
"Ref": "WebServerScaleDownPolicy" | |
} | |
], | |
"Dimensions": [ | |
{ | |
"Name": "AutoScalingGroupName", | |
"Value": { | |
"Ref": "WebServerGroup" | |
} | |
} | |
], | |
"ComparisonOperator": "LessThanThreshold" | |
} | |
}, | |
"ElasticLoadBalancer": { | |
"Type": "AWS::ElasticLoadBalancing::LoadBalancer", | |
"Properties": { | |
"AvailabilityZones": { | |
"Fn::GetAZs": "" | |
}, | |
"Listeners": [ | |
{ | |
"LoadBalancerPort": "80", | |
"InstancePort": { | |
"Ref": "WebServerPort" | |
}, | |
"Protocol": "HTTP" | |
} | |
], | |
"HealthCheck": { | |
"Target": { | |
"Fn::Join": [ | |
"", | |
[ | |
"HTTP:", | |
{ | |
"Ref": "WebServerPort" | |
}, | |
"/" | |
] | |
] | |
}, | |
"HealthyThreshold": "3", | |
"UnhealthyThreshold": "5", | |
"Interval": "30", | |
"Timeout": "5" | |
} | |
} | |
} | |
}, | |
"Outputs" : { | |
"URL" : { | |
"Description" : "URL of the website", | |
"Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment