Creating a custom VPC in AWS - Performance & Efficiency
Start learning this pattern below
Jump into concepts and practice - no test required
When creating a custom Virtual Private Cloud (VPC), it's important to understand how the time to set it up changes as you add more parts.
We want to know how the number of steps grows when we add more subnets or gateways.
Analyze the time complexity of the following operation sequence.
// Create a VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16
// Create multiple subnets
for subnet in subnets:
aws ec2 create-subnet --vpc-id vpc-12345 --cidr-block subnet.cidr
// Create an internet gateway
aws ec2 create-internet-gateway
// Attach the internet gateway to the VPC
aws ec2 attach-internet-gateway --vpc-id vpc-12345 --internet-gateway-id igw-12345
This sequence creates one VPC, several subnets inside it, and an internet gateway attached to the VPC.
Identify the API calls, resource provisioning, data transfers that repeat.
- Primary operation: Creating subnets inside the VPC.
- How many times: Once per subnet you want to add.
Each subnet requires one API call to create it. So, if you add more subnets, the total calls increase directly with the number of subnets.
| Input Size (n) | Approx. Api Calls/Operations |
|---|---|
| 10 | 1 (VPC) + 10 (subnets) + 1 (gateway) + 1 (attach) = 13 |
| 100 | 1 + 100 + 1 + 1 = 103 |
| 1000 | 1 + 1000 + 1 + 1 = 1003 |
Pattern observation: The total operations grow roughly in a straight line as you add more subnets.
Time Complexity: O(n)
This means the time to create the VPC setup grows directly with the number of subnets you add.
[X] Wrong: "Creating more subnets will take the same time as creating just one."
[OK] Correct: Each subnet requires its own creation step, so more subnets mean more steps and more time.
Understanding how setup time grows with added resources helps you design scalable cloud networks and shows you think about real-world impacts.
"What if we created multiple internet gateways instead of just one? How would the time complexity change?"
Practice
Solution
Step 1: Understand what a VPC is
A VPC is a private network in AWS where you control IP ranges and network settings.Step 2: Identify the purpose of a custom VPC
Creating a custom VPC lets you choose your IP range and control network setup for your resources.Final Answer:
To have a private network with a specific IP range for your resources -> Option DQuick Check:
Custom VPC = Private network with chosen IP range [OK]
- Thinking VPC automatically assigns public IPs
- Believing AWS manages the network without user control
- Confusing VPC with external internet connections
Solution
Step 1: Understand CIDR notation
CIDR block defines IP range with format like x.x.x.x/y where y is between 0 and 32.Step 2: Check each option for validity
10.0.0.0/16 is valid CIDR (10.0.0.0/16). 255.255.255.0 is a subnet mask, not CIDR. 192.168.1.256/24 has invalid IP (256). 10.0.0.0/33 has invalid prefix length (33).Final Answer:
10.0.0.0/16 -> Option CQuick Check:
CIDR block format = x.x.x.x/y with y ≤ 32 [OK]
- Using subnet mask instead of CIDR
- Using invalid IP numbers like 256
- Using prefix length greater than 32
aws ec2 create-vpc --cidr-block 10.1.0.0/16 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=MyVPC}]'What will be the result?
Solution
Step 1: Analyze the CLI command structure
The command uses 'create-vpc' with a valid CIDR block and correct tag specification syntax.Step 2: Understand the effect of the command
This creates a VPC with the given CIDR and applies the Name tag 'MyVPC' to it.Final Answer:
A VPC with CIDR 10.1.0.0/16 and a Name tag 'MyVPC' will be created -> Option AQuick Check:
Valid CLI command creates VPC with CIDR and tags [OK]
- Incorrect tag syntax causing command failure
- Confusing subnet creation with VPC creation
- Ignoring the CIDR block parameter
Solution
Step 1: Understand DNS hostnames setting in VPC
DNS hostnames is a VPC attribute that can be enabled or disabled after creation.Step 2: Identify how to enable DNS hostnames
You can modify the VPC attribute via AWS console or CLI without deleting the VPC.Final Answer:
Modify the VPC attribute to enable DNS hostnames using AWS console or CLI -> Option AQuick Check:
DNS hostnames can be enabled post-creation [OK]
- Thinking you must delete and recreate the VPC
- Trying to enable DNS hostnames on a subnet instead of VPC
- Believing DNS hostnames are enabled by default always
Solution
Step 1: Create the VPC with chosen CIDR block
The VPC must exist before creating subnets or attaching gateways.Step 2: Enable DNS support and hostnames on the VPC
This ensures resources inside can resolve names properly.Step 3: Create two public subnets in different availability zones
Subnets must be inside the VPC and in separate AZs for high availability.Step 4: Attach an internet gateway to allow internet access
This makes the subnets public.Final Answer:
Create VPC with CIDR, enable DNS support and hostnames, create two public subnets in different AZs, attach internet gateway -> Option BQuick Check:
VPC -> DNS -> Subnets -> Internet Gateway [OK]
- Creating subnets before the VPC exists
- Attaching internet gateway before VPC creation
- Assuming DNS settings are automatic
