Amazon VPC

Amazon VPC: Building Your Own Private Neighborhood in the Cloud

A complete, beginner-friendly guide to Amazon Virtual Private Cloud — what it is, how its networking pieces fit together, and how it keeps your cloud resources isolated and secure.

Imagine moving into a brand-new gated community. Before any houses are built, someone has to lay down the roads, decide where the entrances and exits will be, install security gates, and figure out which streets connect to the outside world and which stay private. Amazon VPC is exactly this: it is the land, the roads, and the gates you design before placing any servers, databases, or applications inside AWS. Nothing runs in AWS without living inside some VPC, whether you built it yourself or AWS quietly built a default one for you.

1What Is Amazon VPC?

Let’s start with a simple, precise definition.

The Simple Definition

Amazon VPC (Virtual Private Cloud) is a logically isolated section of the AWS cloud where you can launch resources — like servers, databases, and load balancers — inside a network that you define and fully control. It is “virtual” because it isn’t a physical, separate data center; it’s a software-defined network carved out of AWS’s shared infrastructure just for you.

Simple Analogy

Think of AWS as a massive city, and your VPC as a private, walled neighborhood inside that city. You decide how many streets (subnets) exist, which streets connect to the outside highway (internet), where the security checkpoints (security groups) sit, and who is allowed to walk in or out. Other companies have their own separate, walled neighborhoods right next door, but nobody can see or wander into yours unless you explicitly let them.

Why “Isolated” Matters

Even though thousands of customers share the same underlying AWS hardware, each VPC is logically separated so that traffic and resources inside one customer’s VPC are invisible and unreachable from another customer’s VPC unless a deliberate connection is configured.

i
Good To Know

Every AWS account automatically comes with a “default VPC” in each region, pre-configured with basic internet access, so beginners can launch simple resources immediately. Production systems, however, almost always use a carefully designed custom VPC instead.

2The Problem That VPC Solves

To appreciate why VPC exists, picture what cloud computing would look like without it.

A Shared, Chaotic Cloud Without Boundaries

AWS runs enormous shared data centers used by millions of customers simultaneously. Without some way to divide and isolate network traffic, one company’s servers could potentially see or interfere with another company’s servers — a serious security nightmare.

The Need for Controlled Exposure

Not every resource should be reachable from the internet. A public website needs to be open to visitors, but the database behind it should never be directly reachable by the outside world. Without a proper network design, it becomes very difficult to enforce this kind of separation safely.

1 Region
a VPC lives within a single AWS Region
Many AZs
a VPC can span multiple Availability Zones
Millions
IP addresses possible per VPC, depending on size

Network Isolation

VPC guarantees that your resources are logically separated from every other customer’s resources on the same physical AWS infrastructure.

Controlled Internet Exposure

VPC lets you decide, subnet by subnet and resource by resource, exactly what can and cannot be reached from the public internet.

Custom Network Design

VPC lets you design your own IP address ranges, routing rules, and segmentation, similar to how you would design a real office network.

“A VPC is the fence and the floor plan before you ever place a single piece of furniture in the cloud.”

3Core Concepts You Must Know

A handful of vocabulary words form the foundation for everything else in this guide.

Concept

CIDR Block

A notation (like 10.0.0.0/16) describing a range of IP addresses assigned to your VPC or subnet.

Concept

Subnet

A smaller slice of your VPC’s IP address range, tied to one specific Availability Zone.

Concept

Availability Zone (AZ)

One or more physically separate data centers within an AWS Region, used to protect against localized failures.

Concept

Route Table

A set of rules that decide where network traffic from a subnet is allowed to go next.

Concept

Internet Gateway

A component attached to a VPC that allows resources inside public subnets to communicate with the internet.

Concept

Security Group

A virtual firewall attached to individual resources, controlling exactly what traffic is allowed in and out.

Simple Analogy

A CIDR block is like the total number of addresses available on a street. A subnet is one specific block of houses on that street, located in one particular part of town (Availability Zone). A route table is the road sign at the end of each block telling traffic which direction to go.

4Architecture and Components

Let’s walk through the building blocks that together form a complete VPC design.

The VPC Itself

Every VPC is created with a primary IPv4 CIDR block, defining the total pool of private IP addresses available to everything inside it. A VPC always exists within a single AWS Region, but its subnets can spread across multiple Availability Zones within that region.

Subnets: Public vs Private

A public subnet is one whose route table sends internet-bound traffic to an Internet Gateway, making resources inside it reachable from (and able to reach) the public internet. A private subnet has no such route, keeping its resources hidden from direct internet access.

Internet Gateway

An Internet Gateway is a horizontally scaled, highly available AWS-managed component that connects your VPC to the public internet. Only one can be attached to a VPC at a time, and it must be explicitly referenced in a route table to have any effect.

NAT Gateway

A NAT (Network Address Translation) Gateway lives inside a public subnet and allows resources in a private subnet to initiate outbound connections to the internet (for example, downloading software updates) without allowing unsolicited inbound connections from the internet.

graph TD
    Internet((Internet)) --- IGW[Internet Gateway]
    IGW --- PubSub[Public Subnet]
    PubSub --- NAT[NAT Gateway]
    NAT --- PrivSub[Private Subnet]
    PubSub --- WebServer[Web Server]
    PrivSub --- DB[(Database Server)]
        
FIG 1 — A common two-tier VPC layout with a public subnet for internet-facing resources and a private subnet for the database

Route Tables

Each subnet is associated with a route table that defines where network traffic is sent based on its destination address. A public subnet’s route table typically routes internet-bound traffic (0.0.0.0/0) to the Internet Gateway; a private subnet’s route table typically sends it to a NAT Gateway instead.

Component

Elastic IP

A static, public IPv4 address you can attach to resources like NAT Gateways or EC2 instances.

Component

VPC Peering

A private connection linking two separate VPCs so their resources can communicate directly.

Component

VPC Endpoint

A private connection to supported AWS services (like S3) that avoids routing traffic over the public internet.

Component

Network ACL

A stateless firewall applied at the subnet level, evaluated before traffic reaches individual resources.

5Internal Working: How Traffic Actually Flows

Here is what really happens when a request travels from the internet to your application and back.

1

Request Reaches the Internet Gateway

A user’s browser sends a request to your application’s public IP address, which arrives at your VPC’s Internet Gateway.

2

Route Table Directs Traffic

The route table associated with the destination public subnet directs the packet to the correct resource, such as a load balancer or web server.

3

Network ACL Checks Traffic

Before reaching the subnet’s resources, the traffic is evaluated against the subnet’s Network ACL rules, which can allow or deny it.

4

Security Group Checks Traffic

The traffic is then checked against the specific resource’s security group rules, which decide whether that individual resource accepts the connection.

5

Application Processes the Request

If the request needs data, the web server may communicate with a database in a private subnet, routed internally within the VPC without ever touching the public internet.

sequenceDiagram
    participant User as User
    participant IGW as Internet Gateway
    participant Web as Web Server (Public Subnet)
    participant DB as Database (Private Subnet)
    User->>IGW: HTTPS Request
    IGW->>Web: Route via Route Table
    Web->>DB: Internal Query
    DB-->>Web: Return Data
    Web-->>User: HTTPS Response
        
FIG 2 — A typical request flow from the public internet to a web server, then to a private database, and back

6Security

VPC provides several layered tools for controlling exactly what traffic is allowed to move where.

Security Groups: Stateful Firewalls

Security groups act as a virtual firewall at the resource level (such as one attached to a single server). They are “stateful,” meaning if you allow inbound traffic from a certain source, the matching outbound response is automatically allowed too, without needing a separate rule.

Network ACLs: Stateless Firewalls

Network ACLs operate at the subnet level and are “stateless,” meaning inbound and outbound rules must both be explicitly defined, since allowing traffic in one direction does not automatically allow the response in the other direction.

FeatureSecurity GroupNetwork ACL
Applies toIndividual resources (like an EC2 instance)Entire subnets
Stateful or statelessStatefulStateless
Rule typesAllow rules onlyAllow and deny rules
Evaluation orderAll rules evaluated togetherRules evaluated in numbered order

Private Subnets and Least Exposure

A core security principle in VPC design is placing anything that does not need direct internet access — like databases and internal services — into private subnets, drastically reducing the attack surface available to outside attackers.

i
Beginner Tip

A simple rule of thumb: only place resources in a public subnet if they genuinely need to be reached directly from the internet, such as a load balancer or a bastion host.

!
Common Mistake

Accidentally placing a database in a public subnet, or attaching an overly permissive security group rule (like allowing all traffic from anywhere), can expose sensitive systems directly to the internet.

7High Availability and Reliability

A well-designed VPC helps applications survive failures gracefully rather than going down entirely.

Spreading Subnets Across Multiple Availability Zones

By creating subnets in at least two different Availability Zones and deploying duplicate resources across them, a failure in one data center does not take down your entire application.

graph TD
    VPC[VPC: 10.0.0.0/16] --> AZ1[Availability Zone A]
    VPC --> AZ2[Availability Zone B]
    AZ1 --> PubA[Public Subnet A]
    AZ1 --> PrivA[Private Subnet A]
    AZ2 --> PubB[Public Subnet B]
    AZ2 --> PrivB[Private Subnet B]
        
FIG 3 — A highly available VPC layout with matching public and private subnets spread across two Availability Zones

Redundant Internet Gateways and NAT Gateways

The Internet Gateway is inherently highly available and does not require redundancy planning. NAT Gateways, however, are created per Availability Zone, so best practice is to deploy one NAT Gateway in each AZ to avoid a single point of failure for outbound private traffic.

Advantages

  • Multi-AZ subnet design protects against a single data center outage
  • VPC components like Internet Gateways are highly available by design
  • Route tables can be adjusted without downtime in most cases

Disadvantages / Trade-offs

  • Running a NAT Gateway per AZ increases cost compared to a single shared one
  • Poorly planned CIDR ranges can make later expansion difficult

8Monitoring, Logging and Metrics

Understanding what is actually happening on your network is essential for both security and troubleshooting.

VPC Flow Logs

VPC Flow Logs capture information about the IP traffic going to and from network interfaces in your VPC, including source, destination, port, and whether the traffic was accepted or rejected. These logs can be sent to Amazon CloudWatch Logs or Amazon S3 for analysis.

SignalWhat It Tells You
Flow Log ACCEPT/REJECT entriesWhether specific traffic was allowed or blocked, useful for debugging connectivity issues
NAT Gateway bytes processedHow much outbound traffic private resources are generating
Security Group rule changesAn audit trail of who changed firewall rules and when
Route table changesHelps trace unexpected traffic paths after a configuration change
i
Beginner Tip

If an application suddenly cannot reach the internet or another AWS service, checking VPC Flow Logs for REJECT entries is often one of the fastest ways to pinpoint whether a security group or route table is the culprit.

9Design Patterns and Anti-Patterns

Certain VPC layouts have become standard best practice, while other habits create ongoing risk.

Public-Private Two-Tier Pattern

Public subnets hold internet-facing resources like load balancers, while private subnets hold application servers and databases — the most common VPC design for web applications.

Three-Tier Pattern

Adds a dedicated middle tier of private application servers between a public web tier and an isolated database tier, further reducing direct exposure of business logic and data.

Hub-and-Spoke with VPC Peering or Transit Gateway

Multiple VPCs (perhaps for different teams or environments) connect through a central hub, allowing controlled communication without merging everything into one giant network.

VPC Endpoints for AWS Services

Private connections to services like Amazon S3 or DynamoDB avoid routing sensitive traffic over the public internet, even when it’s going to another AWS service.

ANTI-PATTERN-01 Avoid
Problem

Placing every resource, including databases, directly into public subnets for the sake of convenience.

Why It’s Harmful

This unnecessarily exposes sensitive systems to the public internet, dramatically increasing the attack surface for no real benefit.

Correct Approach

Keep only genuinely internet-facing resources in public subnets, and place everything else — especially databases — in private subnets with no direct route to the internet.

ANTI-PATTERN-02 Avoid
Problem

Choosing an overly small CIDR block for a VPC without planning for future growth.

Why It’s Harmful

Running out of available IP addresses later can force a painful, disruptive migration to a larger network.

Correct Approach

Plan CIDR ranges generously in advance, considering future subnets, services, and potential VPC peering needs, since resizing later is far more difficult than planning ahead.

10Best Practices and Common Mistakes

Practical guidance that helps beginners avoid the most common VPC pitfalls.

Best Practices

  • Design subnets across at least two Availability Zones for resilience
  • Keep databases and internal services in private subnets
  • Use security groups for resource-level control and Network ACLs for broader subnet-level rules
  • Enable VPC Flow Logs for visibility into network traffic
  • Use VPC Endpoints for private access to supported AWS services
  • Plan CIDR ranges with room for future growth

Common Mistakes

  • Leaving overly permissive security group rules open to the entire internet
  • Forgetting to attach a route to the Internet Gateway for public subnets
  • Relying on a single NAT Gateway across multiple Availability Zones
  • Choosing overlapping CIDR ranges that later block VPC peering options
i
Practical Advice

When in doubt, start with the two-tier public-private pattern. It is simple, well understood, and covers the needs of the vast majority of beginner and intermediate applications.

11Real-World and Industry Examples

VPC concepts appear everywhere, even if end users never see them directly.

Multi-Tier E-Commerce Platforms

Online retailers commonly separate web servers, application logic, and databases into different subnets, limiting what an attacker could reach even if one layer were compromised.

Financial Services Isolation

Banks and fintech companies often use strict private subnets and Network ACLs to isolate systems handling sensitive financial data from any direct internet exposure.

Multi-Account, Multi-VPC Enterprises

Large organizations frequently run separate VPCs for development, testing, and production, connected through VPC peering or a Transit Gateway for controlled communication.

Hybrid Cloud Connectivity

Companies extending their on-premises data centers into AWS often connect their VPC to their existing network using a VPN or AWS Direct Connect, creating one unified private network.

Big Picture

Almost every serious application running on AWS, from a small startup’s website to a global bank’s trading platform, is built on top of a carefully designed VPC, even though end users never see this invisible foundation.

12Frequently Asked Questions

Q1Do I always need to create my own VPC?

No. Every AWS account comes with a default VPC in each region that works for simple experiments, but production applications typically use a custom VPC designed around specific security and networking needs.

Q2What is the difference between a public and private subnet?

A public subnet’s route table sends internet-bound traffic to an Internet Gateway, making its resources reachable from the internet. A private subnet has no such route, keeping its resources hidden from direct internet access.

Q3Why would a private subnet need internet access at all?

Private resources often still need to reach the internet for things like software updates, which is handled safely through a NAT Gateway that allows outbound connections without allowing unsolicited inbound ones.

Q4Can two separate VPCs communicate with each other?

Yes, through VPC Peering for simple point-to-point connections, or through AWS Transit Gateway when connecting many VPCs together in a more scalable, centralized way.

Q5What’s the difference between a security group and a network ACL?

A security group is a stateful firewall attached to individual resources, while a Network ACL is a stateless firewall applied at the subnet level, requiring both inbound and outbound rules to be explicitly defined.

Q6How do I connect my VPC to my company’s on-premises network?

Common options include a Site-to-Site VPN connection over the public internet, or AWS Direct Connect for a dedicated, private network link between your data center and AWS.

13Summary and Key Takeaways

Amazon VPC is the invisible foundation underneath almost everything you build on AWS. By giving you full control over IP address ranges, subnets, routing, and firewalls, VPC lets you design a network that is exactly as open or as locked-down as your application needs. Getting comfortable with public and private subnets, Internet and NAT Gateways, route tables, and layered security controls is one of the most valuable foundational skills for working confidently and safely in the AWS cloud.

Key Takeaways

  • A VPC is a logically isolated network inside AWS that you design and fully control.
  • Subnets divide your VPC into smaller, Availability-Zone-specific ranges, split into public and private.
  • Internet Gateways and NAT Gateways control exactly how and whether resources reach the internet.
  • Route tables direct traffic, deciding where packets from each subnet are allowed to travel.
  • Security groups and Network ACLs provide layered, complementary firewall protection at different levels.
  • Spreading subnets across multiple Availability Zones is essential for building highly available applications.
  • The public-private two-tier pattern is a safe, well-understood default for most beginner and intermediate designs.