Created
October 23, 2017 04:14
-
-
Save okram999/267fa5eea8aaa43633a5633be58056ff to your computer and use it in GitHub Desktop.
This file contains hidden or 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 AutoScalingMultiAZWithNotifications: Create a multi-az, load balanced and Auto Scaled sample web site running on an Apache Web Serever. The application is configured to span all Availability Zones in the region and is Auto-Scaled based on the CPU utilization of the web servers. Notifications will be sent to the operator email address on scaling events. The instances are load balanced with a simple health check against the default web page. **WARNING** This template creates one or more Amazon EC2 instances and an Application Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", | |
| "Parameters" : { | |
| "VpcId" : { | |
| "Type" : "AWS::EC2::VPC::Id", | |
| "Description" : "VpcId of your existing Virtual Private Cloud (VPC)", | |
| "ConstraintDescription" : "must be the VPC Id of an existing Virtual Private Cloud." | |
| }, | |
| "Subnets" : { | |
| "Type" : "List<AWS::EC2::Subnet::Id>", | |
| "Description" : "The list of SubnetIds in your Virtual Private Cloud (VPC)", | |
| "ConstraintDescription" : "must be a list of at least two existing subnets associated with at least two different availability zones. They should be residing in the selected Virtual Private Cloud." | |
| }, | |
| "InstanceType" : { | |
| "Description" : "WebServer EC2 instance type", | |
| "Type" : "String", | |
| "Default" : "t2.small", | |
| "AllowedValues" : [ "t1.micro", "t2.nano", "t2.micro", "t2.small", "t2.medium", "t2.large", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "g2.8xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge", "d2.xlarge", "d2.2xlarge", "d2.4xlarge", "d2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge"], | |
| "ConstraintDescription" : "must be a valid EC2 instance type." | |
| }, | |
| "OperatorEMail": { | |
| "Description": "EMail address to notify if there are any scaling operations", | |
| "Type": "String", | |
| "AllowedPattern": "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)", | |
| "ConstraintDescription": "must be a valid email address." | |
| }, | |
| "KeyName" : { | |
| "Description" : "The EC2 Key Pair to allow SSH access to the instances", | |
| "Type" : "AWS::EC2::KeyPair::KeyName", | |
| "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." | |
| }, | |
| "SSHLocation" : { | |
| "Description" : "The IP address range that can be used to SSH to the EC2 instances", | |
| "Type": "String", | |
| "MinLength": "9", | |
| "MaxLength": "18", | |
| "Default": "0.0.0.0/0", | |
| "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", | |
| "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." | |
| } | |
| }, | |
| "Mappings" : { | |
| "Region2Examples" : { | |
| "us-east-1" : { "Examples" : "https://s3.amazonaws.com/cloudformation-examples-us-east-1" }, | |
| "us-west-2" : { "Examples" : "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" }, | |
| "us-west-1" : { "Examples" : "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" }, | |
| "eu-west-1" : { "Examples" : "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" }, | |
| "eu-west-2" : { "Examples" : "https://s3-eu-west-2.amazonaws.com/cloudformation-examples-eu-west-2" }, | |
| "eu-central-1" : { "Examples" : "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" }, | |
| "ap-southeast-1" : { "Examples" : "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" }, | |
| "ap-northeast-1" : { "Examples" : "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" }, | |
| "ap-northeast-2" : { "Examples" : "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" }, | |
| "ap-southeast-2" : { "Examples" : "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" }, | |
| "ap-south-1" : { "Examples" : "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" }, | |
| "us-east-2" : { "Examples" : "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" }, | |
| "ca-central-1" : { "Examples" : "https://s3-ca-central-1.amazonaws.com/cloudformation-examples-ca-central-1" }, | |
| "sa-east-1" : { "Examples" : "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" }, | |
| "cn-north-1" : { "Examples" : "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" } | |
| }, | |
| "AWSInstanceType2Arch" : { | |
| "t1.micro" : { "Arch" : "PV64" }, | |
| "t2.nano" : { "Arch" : "HVM64" }, | |
| "t2.micro" : { "Arch" : "HVM64" }, | |
| "t2.small" : { "Arch" : "HVM64" }, | |
| "t2.medium" : { "Arch" : "HVM64" }, | |
| "t2.large" : { "Arch" : "HVM64" }, | |
| "m1.small" : { "Arch" : "PV64" }, | |
| "m1.medium" : { "Arch" : "PV64" }, | |
| "m1.large" : { "Arch" : "PV64" }, | |
| "m1.xlarge" : { "Arch" : "PV64" }, | |
| "m2.xlarge" : { "Arch" : "PV64" }, | |
| "m2.2xlarge" : { "Arch" : "PV64" }, | |
| "m2.4xlarge" : { "Arch" : "PV64" }, | |
| "m3.medium" : { "Arch" : "HVM64" }, | |
| "m3.large" : { "Arch" : "HVM64" }, | |
| "m3.xlarge" : { "Arch" : "HVM64" }, | |
| "m3.2xlarge" : { "Arch" : "HVM64" }, | |
| "m4.large" : { "Arch" : "HVM64" }, | |
| "m4.xlarge" : { "Arch" : "HVM64" }, | |
| "m4.2xlarge" : { "Arch" : "HVM64" }, | |
| "m4.4xlarge" : { "Arch" : "HVM64" }, | |
| "m4.10xlarge" : { "Arch" : "HVM64" }, | |
| "c1.medium" : { "Arch" : "PV64" }, | |
| "c1.xlarge" : { "Arch" : "PV64" }, | |
| "c3.large" : { "Arch" : "HVM64" }, | |
| "c3.xlarge" : { "Arch" : "HVM64" }, | |
| "c3.2xlarge" : { "Arch" : "HVM64" }, | |
| "c3.4xlarge" : { "Arch" : "HVM64" }, | |
| "c3.8xlarge" : { "Arch" : "HVM64" }, | |
| "c4.large" : { "Arch" : "HVM64" }, | |
| "c4.xlarge" : { "Arch" : "HVM64" }, | |
| "c4.2xlarge" : { "Arch" : "HVM64" }, | |
| "c4.4xlarge" : { "Arch" : "HVM64" }, | |
| "c4.8xlarge" : { "Arch" : "HVM64" }, | |
| "g2.2xlarge" : { "Arch" : "HVMG2" }, | |
| "g2.8xlarge" : { "Arch" : "HVMG2" }, | |
| "r3.large" : { "Arch" : "HVM64" }, | |
| "r3.xlarge" : { "Arch" : "HVM64" }, | |
| "r3.2xlarge" : { "Arch" : "HVM64" }, | |
| "r3.4xlarge" : { "Arch" : "HVM64" }, | |
| "r3.8xlarge" : { "Arch" : "HVM64" }, | |
| "i2.xlarge" : { "Arch" : "HVM64" }, | |
| "i2.2xlarge" : { "Arch" : "HVM64" }, | |
| "i2.4xlarge" : { "Arch" : "HVM64" }, | |
| "i2.8xlarge" : { "Arch" : "HVM64" }, | |
| "d2.xlarge" : { "Arch" : "HVM64" }, | |
| "d2.2xlarge" : { "Arch" : "HVM64" }, | |
| "d2.4xlarge" : { "Arch" : "HVM64" }, | |
| "d2.8xlarge" : { "Arch" : "HVM64" }, | |
| "hi1.4xlarge" : { "Arch" : "HVM64" }, | |
| "hs1.8xlarge" : { "Arch" : "HVM64" }, | |
| "cr1.8xlarge" : { "Arch" : "HVM64" }, | |
| "cc2.8xlarge" : { "Arch" : "HVM64" } | |
| }, | |
| "AWSInstanceType2NATArch" : { | |
| "t1.micro" : { "Arch" : "NATPV64" }, | |
| "t2.nano" : { "Arch" : "NATHVM64" }, | |
| "t2.micro" : { "Arch" : "NATHVM64" }, | |
| "t2.small" : { "Arch" : "NATHVM64" }, | |
| "t2.medium" : { "Arch" : "NATHVM64" }, | |
| "t2.large" : { "Arch" : "NATHVM64" }, | |
| "m1.small" : { "Arch" : "NATPV64" }, | |
| "m1.medium" : { "Arch" : "NATPV64" }, | |
| "m1.large" : { "Arch" : "NATPV64" }, | |
| "m1.xlarge" : { "Arch" : "NATPV64" }, | |
| "m2.xlarge" : { "Arch" : "NATPV64" }, | |
| "m2.2xlarge" : { "Arch" : "NATPV64" }, | |
| "m2.4xlarge" : { "Arch" : "NATPV64" }, | |
| "m3.medium" : { "Arch" : "NATHVM64" }, | |
| "m3.large" : { "Arch" : "NATHVM64" }, | |
| "m3.xlarge" : { "Arch" : "NATHVM64" }, | |
| "m3.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "m4.large" : { "Arch" : "NATHVM64" }, | |
| "m4.xlarge" : { "Arch" : "NATHVM64" }, | |
| "m4.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "m4.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "m4.10xlarge" : { "Arch" : "NATHVM64" }, | |
| "c1.medium" : { "Arch" : "NATPV64" }, | |
| "c1.xlarge" : { "Arch" : "NATPV64" }, | |
| "c3.large" : { "Arch" : "NATHVM64" }, | |
| "c3.xlarge" : { "Arch" : "NATHVM64" }, | |
| "c3.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "c3.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "c3.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "c4.large" : { "Arch" : "NATHVM64" }, | |
| "c4.xlarge" : { "Arch" : "NATHVM64" }, | |
| "c4.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "c4.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "c4.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "g2.2xlarge" : { "Arch" : "NATHVMG2" }, | |
| "g2.8xlarge" : { "Arch" : "NATHVMG2" }, | |
| "r3.large" : { "Arch" : "NATHVM64" }, | |
| "r3.xlarge" : { "Arch" : "NATHVM64" }, | |
| "r3.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "r3.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "r3.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "i2.xlarge" : { "Arch" : "NATHVM64" }, | |
| "i2.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "i2.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "i2.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "d2.xlarge" : { "Arch" : "NATHVM64" }, | |
| "d2.2xlarge" : { "Arch" : "NATHVM64" }, | |
| "d2.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "d2.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "hi1.4xlarge" : { "Arch" : "NATHVM64" }, | |
| "hs1.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "cr1.8xlarge" : { "Arch" : "NATHVM64" }, | |
| "cc2.8xlarge" : { "Arch" : "NATHVM64" } | |
| }, | |
| "AWSRegionArch2AMI" : { | |
| "us-east-1" : {"PV64" : "ami-2a69aa47", "HVM64" : "ami-6869aa05", "HVMG2" : "ami-22b68b59"}, | |
| "us-west-2" : {"PV64" : "ami-7f77b31f", "HVM64" : "ami-7172b611", "HVMG2" : "ami-be4ea3c6"}, | |
| "us-west-1" : {"PV64" : "ami-a2490dc2", "HVM64" : "ami-31490d51", "HVMG2" : "ami-cfe5cfaf"}, | |
| "eu-west-1" : {"PV64" : "ami-4cdd453f", "HVM64" : "ami-f9dd458a", "HVMG2" : "ami-aedb26d7"}, | |
| "eu-west-2" : {"PV64" : "NOT_SUPPORTED", "HVM64" : "ami-886369ec", "HVMG2" : "NOT_SUPPORTED"}, | |
| "eu-central-1" : {"PV64" : "ami-6527cf0a", "HVM64" : "ami-ea26ce85", "HVMG2" : "ami-40b8102f"}, | |
| "ap-northeast-1" : {"PV64" : "ami-3e42b65f", "HVM64" : "ami-374db956", "HVMG2" : "ami-d95aabbf"}, | |
| "ap-northeast-2" : {"PV64" : "NOT_SUPPORTED", "HVM64" : "ami-2b408b45", "HVMG2" : "NOT_SUPPORTED"}, | |
| "ap-southeast-1" : {"PV64" : "ami-df9e4cbc", "HVM64" : "ami-a59b49c6", "HVMG2" : "ami-15660276"}, | |
| "ap-southeast-2" : {"PV64" : "ami-63351d00", "HVM64" : "ami-dc361ebf", "HVMG2" : "ami-0b5a4168"}, | |
| "ap-south-1" : {"PV64" : "NOT_SUPPORTED", "HVM64" : "ami-ffbdd790", "HVMG2" : "ami-f4cdb79b"}, | |
| "us-east-2" : {"PV64" : "NOT_SUPPORTED", "HVM64" : "ami-f6035893", "HVMG2" : "NOT_SUPPORTED"}, | |
| "ca-central-1" : {"PV64" : "NOT_SUPPORTED", "HVM64" : "ami-730ebd17", "HVMG2" : "NOT_SUPPORTED"}, | |
| "sa-east-1" : {"PV64" : "ami-1ad34676", "HVM64" : "ami-6dd04501", "HVMG2" : "NOT_SUPPORTED"}, | |
| "cn-north-1" : {"PV64" : "ami-77559f1a", "HVM64" : "ami-8e6aa0e3", "HVMG2" : "NOT_SUPPORTED"} | |
| } | |
| }, | |
| "Resources" : { | |
| "NotificationTopic": { | |
| "Type": "AWS::SNS::Topic", | |
| "Properties": { | |
| "Subscription": [ { "Endpoint": { "Ref": "OperatorEMail" }, "Protocol": "email" } ] | |
| } | |
| }, | |
| "WebServerGroup" : { | |
| "Type" : "AWS::AutoScaling::AutoScalingGroup", | |
| "Properties" : { | |
| "VPCZoneIdentifier" : { "Ref" : "Subnets" }, | |
| "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, | |
| "MinSize" : "1", | |
| "MaxSize" : "3", | |
| "TargetGroupARNs" : [ { "Ref" : "ALBTargetGroup" } ], | |
| "NotificationConfiguration" : { | |
| "TopicARN" : { "Ref" : "NotificationTopic" }, | |
| "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH", | |
| "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", | |
| "autoscaling:EC2_INSTANCE_TERMINATE", | |
| "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"] | |
| } | |
| }, | |
| "CreationPolicy" : { | |
| "ResourceSignal" : { | |
| "Timeout" : "PT5M", | |
| "Count" : "1" | |
| } | |
| }, | |
| "UpdatePolicy": { | |
| "AutoScalingRollingUpdate": { | |
| "MinInstancesInService": "1", | |
| "MaxBatchSize": "1", | |
| "PauseTime" : "PT5M", | |
| "WaitOnResourceSignals": "true" | |
| } | |
| } | |
| }, | |
| "LaunchConfig" : { | |
| "Type" : "AWS::AutoScaling::LaunchConfiguration", | |
| "Metadata" : { | |
| "Comment" : "Install a simple application", | |
| "AWS::CloudFormation::Init" : { | |
| "config" : { | |
| "packages" : { | |
| "yum" : { | |
| "httpd" : [] | |
| } | |
| }, | |
| "files" : { | |
| "/var/www/html/index.html" : { | |
| "content" : { "Fn::Join" : ["\n", [ | |
| "<img src=\"", {"Fn::FindInMap" : ["Region2Examples", {"Ref" : "AWS::Region"}, "Examples"]}, "/cloudformation_graphic.png\" alt=\"AWS CloudFormation Logo\"/>", | |
| "<h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1>" | |
| ]]}, | |
| "mode" : "000644", | |
| "owner" : "root", | |
| "group" : "root" | |
| }, | |
| "/etc/cfn/cfn-hup.conf" : { | |
| "content" : { "Fn::Join" : ["", [ | |
| "[main]\n", | |
| "stack=", { "Ref" : "AWS::StackId" }, "\n", | |
| "region=", { "Ref" : "AWS::Region" }, "\n" | |
| ]]}, | |
| "mode" : "000400", | |
| "owner" : "root", | |
| "group" : "root" | |
| }, | |
| "/etc/cfn/hooks.d/cfn-auto-reloader.conf" : { | |
| "content": { "Fn::Join" : ["", [ | |
| "[cfn-auto-reloader-hook]\n", | |
| "triggers=post.update\n", | |
| "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", | |
| "action=/opt/aws/bin/cfn-init -v ", | |
| " --stack ", { "Ref" : "AWS::StackName" }, | |
| " --resource LaunchConfig ", | |
| " --region ", { "Ref" : "AWS::Region" }, "\n", | |
| "runas=root\n" | |
| ]]}, | |
| "mode" : "000400", | |
| "owner" : "root", | |
| "group" : "root" | |
| } | |
| }, | |
| "services" : { | |
| "sysvinit" : { | |
| "httpd" : { "enabled" : "true", "ensureRunning" : "true" }, | |
| "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", | |
| "files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]} | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "Properties" : { | |
| "KeyName" : { "Ref" : "KeyName" }, | |
| "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, | |
| { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, | |
| "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], | |
| "InstanceType" : { "Ref" : "InstanceType" }, | |
| "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ | |
| "#!/bin/bash -xe\n", | |
| "yum update -y aws-cfn-bootstrap >> /var/log/cf-bootstrap.log\n", | |
| "yum update -y aws-cli > /var/log/cf-aws-cli-update.log\n", | |
| "/opt/aws/bin/cfn-init -v ", | |
| " --stack ", { "Ref" : "AWS::StackName" }, | |
| " --resource LaunchConfig ", | |
| " --region ", { "Ref" : "AWS::Region" }, " > /var/log/cf-init-log\n", | |
| "/opt/aws/bin/cfn-signal -e $? ", | |
| " --stack ", { "Ref" : "AWS::StackName" }, | |
| " --resource WebServerGroup ", | |
| " --region ", { "Ref" : "AWS::Region" }, " > /var/log/cfn-signal-log\n" | |
| ]]}} | |
| } | |
| }, | |
| "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" | |
| } | |
| }, | |
| "ApplicationLoadBalancer" : { | |
| "Type" : "AWS::ElasticLoadBalancingV2::LoadBalancer", | |
| "Properties" : { | |
| "Subnets" : { "Ref" : "Subnets"} | |
| } | |
| }, | |
| "ALBListener" : { | |
| "Type" : "AWS::ElasticLoadBalancingV2::Listener", | |
| "Properties" : { | |
| "DefaultActions" : [{ | |
| "Type" : "forward", | |
| "TargetGroupArn" : { "Ref" : "ALBTargetGroup" } | |
| }], | |
| "LoadBalancerArn" : { "Ref" : "ApplicationLoadBalancer" }, | |
| "Port" : "80", | |
| "Protocol" : "HTTP" | |
| } | |
| }, | |
| "ALBTargetGroup" : { | |
| "Type" : "AWS::ElasticLoadBalancingV2::TargetGroup", | |
| "Properties" : { | |
| "HealthCheckIntervalSeconds" : 30, | |
| "HealthCheckTimeoutSeconds" : 5, | |
| "HealthyThresholdCount" : 3, | |
| "Port" : 80, | |
| "Protocol" : "HTTP", | |
| "UnhealthyThresholdCount" : 5, | |
| "VpcId" : {"Ref" : "VpcId"} | |
| } | |
| }, | |
| "InstanceSecurityGroup" : { | |
| "Type" : "AWS::EC2::SecurityGroup", | |
| "Properties" : { | |
| "GroupDescription" : "Enable SSH access and HTTP from the load balancer only", | |
| "SecurityGroupIngress" : [ { | |
| "IpProtocol" : "tcp", | |
| "FromPort" : "22", | |
| "ToPort" : "22", | |
| "CidrIp" : { "Ref" : "SSHLocation"} | |
| }, | |
| { | |
| "IpProtocol" : "tcp", | |
| "FromPort" : "80", | |
| "ToPort" : "80", | |
| "SourceSecurityGroupId" : {"Fn::Select" : [0, {"Fn::GetAtt" : ["ApplicationLoadBalancer", "SecurityGroups"]}]} | |
| } ], | |
| "VpcId" : { "Ref" : "VpcId" } | |
| } | |
| } | |
| }, | |
| "Outputs" : { | |
| "URL" : { | |
| "Description" : "The URL of the website", | |
| "Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ | |
| "ApplicationLoadBalancer", "DNSName" ]}]]} | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment