====== AWS Auto Scaling Groups / Launch Configurations ======
In AWS in order to build an auto scaling group, we need to configure a Launch Configuraton, this is a template which defines common parameters for each ec2 instance launched in to an auto scaling group.
===== Describing =====
$ aws autoscaling describe-launch-configurations --profile nonprod_admin --launch-configuration-names "AJ-launchconf4"
{
"LaunchConfigurations": [
{
"LaunchConfigurationName": "AJ-launchconf4",
"LaunchConfigurationARN": "arn:aws:autoscaling:eu-west-1:057726927330:launchConfiguration:df5e2c39-aa59-43fa-8e77-7f26e7ee9c10:launchConfigurationName/AJ-launchconf4",
"ImageId": "ami-00b60bad97d2ab303",
"KeyName": "AJS-aws",
"SecurityGroups": [
"sg-0c8d4dcf22182d992"
],
"ClassicLinkVPCSecurityGroups": [],
"UserData": "",
"InstanceType": "t2.micro",
"KernelId": "",
"RamdiskId": "",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"SnapshotId": "snap-07ce0241eefdb9e56",
"VolumeSize": 16,
"VolumeType": "gp2",
"DeleteOnTermination": true
}
}
],
"InstanceMonitoring": {
"Enabled": false
},
"CreatedTime": "2019-09-20T09:03:52.567Z",
"EbsOptimized": false
}
]
}
andrew@mac:auto-scaling$ aws autoscaling describe-auto-scaling-groups --profile nonprod_admin --auto-scaling-group-name aj-asg3
{
"AutoScalingGroups": [
{
"AutoScalingGroupName": "aj-asg3",
"AutoScalingGroupARN": "arn:aws:autoscaling:eu-west-1:057726927330:autoScalingGroup:c74d6cff-7402-4ac0-8632-8880895b7daf:autoScalingGroupName/ajs-asg3",
"LaunchConfigurationName": "AJ-launchconf4",
"MinSize": 0,
"MaxSize": 1,
"DesiredCapacity": 0,
"DefaultCooldown": 300,
"AvailabilityZones": [
"eu-west-1c"
],
"LoadBalancerNames": [],
"TargetGroupARNs": [],
"HealthCheckType": "EC2",
"HealthCheckGracePeriod": 300,
"Instances": [],
"CreatedTime": "2019-06-21T10:12:35.947Z",
"SuspendedProcesses": [],
"VPCZoneIdentifier": "subnet-b4acc3fc",
"EnabledMetrics": [],
"Tags": [
{
"ResourceId": "aj-asg3",
"ResourceType": "auto-scaling-group",
"Key": "Description",
"Value": "Test ASG for lifecycle",
"PropagateAtLaunch": true
},
{
"ResourceId": "aj-asg3",
"ResourceType": "auto-scaling-group",
"Key": "email",
"Value": "user@company.co.uk",
"PropagateAtLaunch": true
}
],
"TerminationPolicies": [
"Default"
],
"NewInstancesProtectedFromScaleIn": false,
"ServiceLinkedRoleARN": "arn:aws:iam::057726927330:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
}
]
}
===== Creating =====
$ aws autoscaling create-launch-configuration --launch-configuration-name AJ-launchconf5-cli --image-id ami-00b60bad97d2ab303 --key-name AJS-aws --security-groups sg-0c8d4dcf22182d992 --instance-type t2.micro --instance-monitoring Enabled=false --profile nonprod_admin
$ aws autoscaling create-auto-scaling-group --auto-scaling-group-name aj-asg4 --launch-configuration-name AJ-launchconf5-cli --min-size 0 --max-size 1 --availability-zones "eu-west-1c" --health-check-type EC2 --health-check-grace-period 300 --tags ResourceId=ajs-asg4,ResourceType=auto-scaling-group,Key=Description,Value="Test ASG for lifecycle",PropagateAtLaunch=true ResourceId=aj-asg4,ResourceType=auto-scaling-group,Key=email,Value="andrew.stringer@sainsburys.co.uk",PropagateAtLaunch=true --profile nonprod_admin
===== Deleting =====
$ aws autoscaling delete-auto-scaling-group --auto-scaling-group-name aj-asg4 --profile nonprod_admin
$ aws autoscaling delete-launch-configuration --launch-configuration-name AJ-launchconf5-cli --profile nonprod_admin
===== Updating =====
$ aws autoscaling update-auto-scaling-group --auto-scaling-group-name aj-asg4 --min-size 1 --profile nonprod_admin
$
$ aws autoscaling update-auto-scaling-group --auto-scaling-group-name aj-asg4 --desired-capacity 0 --profile nonprod_admin
$