Let’s have a look at Creation of AWS VPC

black and gray laptop computer turned on doing computer codes
Reading Time: 3 minutes

This blog demonstrate how we can create a Virtual Private Cloud (VPC) in AWS cloud using a bash script. In this blog, we will break down the steps with its explanation. So, lets go through it.

1. Prerequisites

  1. An AWS account
    • To create an AWS account click here.
  2. Install AWS CLI
    • To install AWS CLI, visit here for Linux and for Windows and Mac click here.
  3. Install Command-line JSON processor (jq)
    • To install jq click here (only for Linux).

2. Let’s create a VPC

VPC is a secure and isolated cloud similar to traditional networks hosted within a public cloud environment.

Step 1: VPC creation

To create a VPC, use the following command:

Here,  we use create-vpc command of ec2 service with the option –cidr-block use to define Classless Inter-Domain Routing range which is stored in the global variable VPC_CIDR_BLOCK, –-region is used to define the region where we want our VPC to be created and is stored in the global variable REGION and option –output is for formatting style for command output.

Finally, lets store its output in variable “awsResponse”, which will be used to get the vpc_id using JSON pre-processor (jq) and stores the VpcId in “vpcId” variable. This VpcId will be used later to link our resource.

Step 2: Tag the VPC

Let’s tag our VPC, to easily identify it once we start having multiple VPCs, to do this run the following command:

Here,  we use create-tags command of ec2 service with the options –resources used to refer to our vpcId variable containing our Vpc Id,–tags have two fields first one is the Key which will have the key of the tag and Value which will carry the value of the tag stored in the global variable VPC_TAG_NAME and–region is same as before.

Step 3: Describe the VPC

Let Describe this VPC, to get the information about the created VPC using following command:

Here,  we use describe-vpcs command of ec2 service with the options –vpc-ids used to refer to our vpcId variable containing our Vpc Id and –region is same as before. The output of which is stored in “vpcDescription” and later parsed with JSON pre-processor (jq) to get the below description.

Output of describe-vpc :

In the above image, you can get the information like “CidrBlock”, “State”, “VpcId”, “Tags” etc. about our created VPC.

Step 4: Let’s up it altogether in Bash script

#!/bin/bash


# Define global variables for VPC creation

REGION='ap-south-1'

VPC_TAG_NAME='aws_Cli_VPC_tagName'

VPC_CIDR_BLOCK='10.1.0.0/16'


# VPC creating message

echo "Creating VPC..."


# creating vpc and storing response

awsResponse=$(aws ec2 create-vpc \

            --cidr-block "$VPC_CIDR_BLOCK" \

            --region "$REGION" \

            --output json)


# getting vpcId

vpcId=$(echo -e "$awsResponse" | \

        /usr/bin/jq '.Vpc.VpcId' | \

        tr -d '"')

sleep 2


# tagging vpc

echo "Tagging vpc..."

aws ec2 create-tags \

        --resources "$vpcId" \

        --tags Key=Name,Value="$VPC_TAG_NAME" \

        --region "$REGION"


# describe vpcId

echo "VPC description:"

vpcDescription=$(aws ec2 describe-vpcs \

                --vpc-ids "$vpcId" \

                --region "$REGION")


echo $vpcDescription | /usr/bin/jq

To run this script, give its executable permission and type ./<your_script_name>.sh in your terminal. This is what it looks in AWS Console.

3. Conclusion

So, In this blog we went through the process of AWS VPC creation using AWS CLI. We can also add public subnets, private subnets, internet gateway, elastic IP for NAT gateway and many more. Thanks for being with us till the end. If you find this blog helpful do share with your friends.