Creation of S3 Buckets and Launching EC2 Instances using boto3

1. Creating an S3 Bucket:

The S3 (Simple Storage Service) provided by AWS is a versatile and scalable object storage service. To create an S3 bucket programmatically using Python and boto3, we define the create_s3_bucket function. This function initializes an S3 client and calls the create_bucket method, specifying the desired bucket name and region. A successful response indicates the bucket's successful creation.

2. Launching an EC2 Instance:

EC2 (Elastic Compute Cloud) is a widely-used cloud computing service that allows users to launch virtual machines in the cloud. In this article, we implement the launch_ec2_instance function, which utilizes boto3's EC2 client to request the creation of an instance. Key parameters such as AMI ID, instance type, key pair name, and security group ID are provided to configure the instance.

The function then waits for the EC2 instance to enter the "running" state before proceeding. This ensures that the instance is fully operational before performing any further tasks. Once the instance is successfully launched and running, the function returns its unique instance ID.

3. Execution and Impact:

When executing the script, developers can replace the sample values with their preferred configurations. For instance, the AMI ID can be customized to fit specific operating systems, instance types can be adjusted for varying resource requirements, and security groups can be tailored for network access control.

The article emphasizes the ease and flexibility that Python and boto3 bring to the AWS environment. Developers can automate the setup of S3 buckets and EC2 instances, streamlining workflows and reducing manual efforts.


Through Python's integration with the AWS SDK, developers can unlock the full potential of AWS cloud services. The ability to create S3 buckets and launch EC2 instances programmatically not only saves time but also empowers businesses to harness AWS's scalability and flexibility. As technology continues to evolve, AWS and Python serve as a powerful combination, enabling businesses to stay ahead of the curve in a cloud-first world.


import boto3
import time
import random

def create_s3_bucket(bucket_name):
    s3client = boto3.client('s3')
    response = s3client.create_bucket(
    Bucket = bucket_name,
    CreateBucketConfiguration = {
        'LocationConstraint': 'ap-south-1'
    print("S3 Bucket '{}'created successfully.".format(bucket_name))

def launch_ec2_instance():
    ec2_client = boto3.client('ec2')

    # Replace with your preferred AMI ID, instance type, key pair name, and security group ID.
    ami_id = 'ami-0ded8326293d3201b'
    instance_type = 't2.micro'
    key_pair_name = 'myawsansiblekey'
    security_group_id = 'sg-06e5ba1d91b83fd8c'

    response = ec2_client.run_instances(

    instance_id = response['Instances'][0]['InstanceId']
    print("EC2 instance with ID '{}' launched successfully.".format(instance_id))

    # Wait for the instance to be in a running state before proceeding
    waiter = ec2_client.get_waiter('instance_running')
    print("EC2 instance '{}' is now running.".format(instance_id))

    return instance_id

if __name__ == "__main__":
    # Replace 'your_bucket_name' with your desired bucket name

    # Launch EC2 instance and get the instance ID
    instance_id = launch_ec2_instance()