====== 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 $