Skip to main content

AWS Auto Scaling using Python Boto3

Auto Scaling Group in AWS configure using Python Boto3 

What is Auto Scaling means? 

This is key capability or power of Cloud Computing Engineers believe in their skills on scaling abilities. 

Amazon EC2 Auto Scaling helps to maintain application availability and lets automatically add or remove EC2 instances using scaling policies that we define.  There are 2 types of scaling policies : Dynamic or predictive. These scaling policies let us add or remove EC2 instances capacity to service established or real-time demand patterns.

It contains various steps involved in Auto Scaling process using Python Boto3 we will explore every step that accumulate to form a complete automation solution for a DevOps project.

ASG Groups associated with ELB and EC2 instances


 

Understanding AWS Auto scaling configuration steps

Check any running instances Create launch configuration Configure ASG for Auto scaling Verify the configuration Disable Auto Scaling
In order to setup Auto Scaling, we need Launch configuration to be created first followed by Auto Scaling group

1. Check any running instances

Get the running EC2 instance list
import boto3
ec2_resource=boto3.resource('ec2')

instances = ec2_resource.instances.filter(
	Filters=[{'Name':'insance-state-name','Values':['running']}
	])
for i in instances:
    print(instance.id, instance.state)
Check the output
 

2. Create launch configuration 

 object client referring to 'autoscaling' method: create_launch_configuration() method is used to create launch configuration
as_client = boto3.client('autoscaling')	

ami_id = input("Please enter AMI id to use in Auto Scaling:")
keyname = input("Please enter Key Name to use for instances:")

response = as_client.create_launch_configuration(
	LaunchConfigurationName = 'vybhava_lc',
	ImageId = ami_id,
	KeyName = kayname,
	SecurityGroup = ['vybhava_sg']
	InstanceType = 't2.micro'
)
print(response)
When you observe the printed output have 'HTTPStatusCode as 200 then it is successful. 3. Creating Auto Scaling Group The create_auto_scaling_group() method is used to create Auto Scaling group.
asg_resp = as_client.create_auto_scaling_group(
	AutoScalingGroupName='vybhava_asg',
	LaunchConfigurationName='vybhava_lc',
	MinSize=1, MaxSize=2, DesiredCapacity=1,
	LoadBalancerNames=['vybhava_lb']
	AvailabilityZones=['ap-south-1b','ap-south-1c']
)
print (asg_resp)
print (asg_resp['ResponseMetadata']['HTTPStatusCode']) #Try this 
Check the output and compare it withe AWS console
 

4. Updating ASG 

You can try scale up by increase MinSize, MaxSize, DesiredCapacity values up similarly down. When you do update remember that is should not pass LoadBalancerNames.
update_resp = as_client.update_auto_scaling_group(
	AutoScalingGroupName='vybhava_asg',
	LaunchConfigurationName='vybhava_lc',
	MinSize=1, MaxSize=2, DesiredCapacity=1,

	AvailabilityZones=['ap-south-1b','ap-south-1c']
)

print(update_resp)
When you run down to 0 value then terminated ASG instances.

In Auto Scaling group configuration, Number of instances always remain up and running is the meaning of parameter 'DesiredCapacity'. Auto Scaling Group defining we need to define the Load Balancer in Auto Scaling setup.

Comments

Popular posts from this blog

Python Interview Questions -Coding Snipets

 This post is dedicated for all DevOps Engineer, Software Engineers who are preparing for Coding Interviews,  Overview of Coding Interviews Most Companies looking for People with minimum Coding knowledge. In a coding interview, you will be given a small problem to solve within 10 - 20 minutes online screen or in-person on their system. In the question, you might be having some part of the code framed and you might be asked to write a snippet of code in between. You need to understand the code comments and proceed to build the expected snippet of code. Bigger companies look for the General purpose questions, where small companies look for specific questions. The General questions would be like this: Determine if the given word is a palindrome or not. (Example madam) Determine given number is prime or not. How to prepare for a coding interview? Now we have the flexibility to choose the programming language on which you are comfortable.  In general DevOps Infra guys will be ...

Python Sets and Dictionaries

Python Sets Python Maps examples A mapping object maps hashable values to arbitrary objects. Mappings are mutable objects. There is currently only one standard mapping type, the dictionary. Dictionaries consist of pairs (called items) of keys and their corresponding values. Dictionaries can be created by placing a comma-separated list of key: value pairs within curly braces Keys are unique within a dictionary while values may not be. The values of a dictionary can be of any type, but the keys must be of an immutable data type such as strings, numbers, or tuples. Python Set Operations and methods Python Set methods continueed >>> SET={'new','old','list','new'} >>> SET set(['new', 'old', 'list']) Lets play with set operations, it is more like school math here... >>> s={1,2,3,4} >>> k={3,4,5,6} >>> len(s) 4 >>> len(k) 4 >>> 1 in s True >>...

Program Controls and loops in Python

Python Programming controls The flow of program will be controlled with conditional statements where this flow  if condition if-else condition if-elif condition while loop while - else loop for loop for with if- else loop if condition Here I would like to work on program control statements, wherein relate some operating system functionalities so that, this would give some basic prototype for the sys admin scripts. #!/usr/bin/python # This illustrate if condition # Filename : ifex.py import os d=os.listdir('/home/pavanbsd/pybin') print d f='ifex.py' if f in d: print "File exists" else: print "Not found..." if-elif-else ladder No worries, coming soon... When you need the task that need to be done repeatedly then your choice is using loops. Python provides two simple loop constructs easy to use! More powerful then other scripting compare to, it has 'else' block. while loop Understand the power of while loop,...