{ "Parameters": { "AdminAPIScalingGroupMinSizeVar": {"Type": "Number", "MinValue": "0", "Default": "0"}, "AdminAPIScalingGroupMaxSizeVar": {"Type": "Number", "MinValue": "1", "Default": "1"} }, "Resources": { "AdminAPIScalingGroup": { "Type": "AWS::AutoScaling::AutoScalingGroup", "DependsOn": "PrivateRouteThroughBastionBox", "UpdatePolicy": { "AutoScalingRollingUpdate": { "MinInstancesInService": {"Ref": "AdminAPIScalingGroupMinSizeVar"}, "MaxBatchSize": "1", "PauseTime": "PT0S" } }, "Properties": { "AvailabilityZones": [{"Fn::GetAtt": ["PrivateSubnet", "AvailabilityZone"]}], "VPCZoneIdentifier": [{"Ref": "PrivateSubnet"}], "LaunchConfigurationName": {"Ref": "BackendLaunchConfiguration"}, "MinSize": {"Ref": "AdminAPIScalingGroupMinSizeVar"}, "MaxSize": {"Ref": "AdminAPIScalingGroupMaxSizeVar"}, "DesiredCapacity": {"Ref": "AdminAPIScalingGroupMinSizeVar"}, "HealthCheckType": "ELB", "HealthCheckGracePeriod": "6000", "LoadBalancerNames": [ {"Ref": "AdminAPILoadBalancer"} ], "TerminationPolicies": ["OldestLaunchConfiguration", "OldestInstance"], "MetricsCollection": [{ "Granularity": "1Minute", "Metrics": ["GroupMinSize", "GroupMaxSize"] }] } }, "BackendLaunchConfiguration" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata": { "AWS::CloudFormation::Init": {} }, "Properties" : { "InstanceType": "m3.medium", "ImageId": {"Ref": "InstanceAMIVar"}, "KeyName": {"Ref": "IAMKeypairNameVar"}, "SecurityGroups": [{"Ref": "BackendSecurityGroup"}], "IamInstanceProfile" : {"Ref": "BackendProfile"}, "UserData": {"Fn::Base64": {"Fn::Join": ["", [ "#!/bin/bash\n", "export AWS_REGION='", {"Ref": "AWS::Region"}, "'\n", "export AWS_STACK_NAME='", {"Ref": "AWS::StackName"}, "'\n", "export AWS_INSTANCE_LOGICAL_NAME='BackendLaunchConfiguration'\n", "export DB_HOST='", {"Fn::GetAtt": ["DB", "Endpoint.Address"]}, "'\n", "export DB_PORT='", {"Fn::GetAtt": ["DB", "Endpoint.Port"]}, "'\n", {"Ref": "UserDataEnvironmentVar"}, "\n", {"Ref": "CommonRoleScriptVar"}, "\n", {"Ref": "BackendRoleScriptVar"}, "\n" ]]}} } } } }