Automating AWS Infrastructure: Launching EC2 Instance and Attaching EBS Volume Programmatically with Boto3

Automating AWS Infrastructure: Launching EC2 Instance and Attaching EBS Volume Programmatically with Boto3

Amazon Web Services (AWS) has revolutionized cloud computing by offering a robust set of services that enable businesses to deploy and manage their applications effortlessly. Among these services are Amazon Elastic Compute Cloud (EC2) instances and Elastic Block Store (EBS) volumes. In this blog post, we will explore how to programmatically launch an EC2 instance, create an EBS volume, and attach it to the instance using the AWS SDK for Python (boto3). Automating these tasks with code empowers developers to manage their infrastructure efficiently and scale their applications effortlessly.

Prerequisites:

Before we dive into the process, make sure you have the following prerequisites in place:

  1. An AWS account with necessary access credentials.
  2. Python installed on your local machine.
  3. The AWS SDK for Python (boto3) installed.

Step 1: Import the Required Libraries

To get started, open your Python editor and import the necessary libraries:

import boto3

Step 2: Launch an EC2 Instance

We'll use boto3 to create an EC2 instance with our preferred specifications. The following code demonstrates how to do this:

ec2 = boto3.client('ec2')

instance = ec2.run_instances(

ImageId='ami-0d13e3e640877b0b9',

InstanceType='t2.micro',

MinCount=1,

MaxCount=1)

# To get the Instance id

instance_id = instance['Instances'][0]['InstanceId']

Step 3: Create an EBS Volume

Next, we'll create an EBS volume that we can attach to the EC2 instance programmatically:

# Create an EBS volume

ebs = ec2.create_volume(

  Size=<VOLUME_SIZE>,

  AvailabilityZone='<AVAILABILITY_ZONE>'

)

# Wait for the EBS volume to be available

while ebs.state != 'available':

  time.sleep(5)

  ebs.reload()

In this code, replace <VOLUME_SIZE> with the desired size of the EBS volume and <AVAILABILITY_ZONE> with the availability zone where your EC2 instance is located.

Step 4: Attach EBS Volume to the EC2 Instance

Now that we have both the EC2 instance and EBS volume created, we can attach the volume to the instance programmatically:

# Attach the EBS volume to the EC2 instance

attachment = ebs.attach_to_instance(

 InstanceId=instance.id,

 Device='/dev/sdf' # Choose the appropriate device name

)

# Wait for the attachment to complete

while ebs.attachments[0]['State'] != 'attached':

 time.sleep(5)

 ebs.reload()

In the Device parameter, specify the desired device name to which the EBS volume should be attached.

Conclusion:

Congratulations! You have successfully learned how to programmatically launch an EC2 instance, create an EBS volume, and attach it to the instance using the AWS SDK for Python (boto3). This automation allows developers to streamline their infrastructure management and focus on building scalable and robust applications on the AWS platform.

To view or add a comment, sign in

More articles by Sasi Chava

Explore content categories