Setting up a Virtual Private Cloud (VPC) is foundational when deploying resources in AWS securely. This guide walks you through creating:
- A VPC
- Public & Private Subnets
- Internet Gateway
- NAT Gateway
- Route Tables
- Optional EC2 Instances
✅ 1. Create a VPC
- Go to VPC Dashboard > Your VPCs > Create VPC
- Choose VPC only
- Name:
MyVPC - IPv4 CIDR block:
10.0.0.0/16 - Leave other fields as default
- Click Create VPC


✅ 2. Create Subnets
Navigate to Subnets > Create Subnet
➤ Public Subnet:
- Name:
PublicSubnet - VPC:
MyVPC - AZ:
ap-south-1a - CIDR block:
10.0.1.0/24
➤ Private Subnet:
- Name:
PrivateSubnet - VPC:
MyVPC - AZ:
ap-south-1b - CIDR block:
10.0.2.0/24
✅ 3. Create and Attach Internet Gateway
- Go to Internet Gateways > Create Internet Gateway
- Name:
MyIGW
- Name:
- Click Attach to VPC and select
MyVPC

✅ 4. Create a Public Route Table
-
Go to Route Tables > Create Route Table
- Name:
PublicRT - VPC:
MyVPC
- Name:
-
Select
PublicRT> Routes > Edit Routes- Add route:
- Destination:
0.0.0.0/0 - Target: Internet Gateway →
MyIGW
- Destination:
- Add route:


- Go to Subnet Associations > Edit Subnet Associations
- Select:
PublicSubnet
- Select:

✅ 5. Allocate Elastic IP (EIP)
- Go to Elastic IPs > Allocate Elastic IP
- Note the allocation ID


✅ 6. Create NAT Gateway
- Go to NAT Gateways > Create NAT Gateway
- Name:
MyNATGW - Subnet:
PublicSubnet - Elastic IP: select the one you just allocated
- Name:


⏳ Wait a few minutes for the NAT Gateway to become active.
✅ 7. Create a Private Route Table
-
Go to Route Tables > Create Route Table
- Name:
PrivateRT - VPC:
MyVPC
- Name:
-
Select
PrivateRT> Routes > Edit Routes- Add route:
- Destination:
0.0.0.0/0 - Target: NAT Gateway →
MyNATGW
- Destination:
- Add route:

- Go to Subnet Associations
- Attach
PrivateSubnet
- Attach

✅ 8. Launch EC2 Instances (Optional)
➤ Public EC2:
- AMI: Amazon Linux 2
- Network:
MyVPC, Subnet:PublicSubnet - Auto-assign Public IP: Enabled
- Security Group: Allow SSH (port 22) from your IP
➤ Private EC2:
- Same AMI
- Subnet:
PrivateSubnet - Auto-assign Public IP: Disabled


✅ SSH Connection Established
Use your terminal to SSH into the public instance, and from there connect to the private one using its private IP.

⚠️ Troubleshooting Tip
If you're unable to connect:
- Check your Security Group's inbound rules:
- Type: SSH
- Protocol: TCP
- Port: 22
- Source:
My IPor0.0.0.0/0(for open access - use carefully!)
🧹 Clean Up Resources
To avoid unnecessary charges, clean up:


📌 Summary Diagram
VPC: 10.0.0.0/16
├── PublicSubnet (10.0.1.0/24)
│ ├── Internet Gateway → Public RT → 0.0.0.0/0
│ └── NAT Gateway (for private subnet)
├── PrivateSubnet (10.0.2.0/24)
└── NAT Gateway → Private RT → 0.0.0.0/0✨ Happy Cloud Building!