Why start with a map?
Ask five engineers which AWS service connects two VPCs and you'll get five answers: peering, Transit Gateway, Cloud WAN, PrivateLink and VPC Lattice. All of them work, but each does a different job. Most bad network designs aren't caused by bad configuration. They come from picking a service built for some other job, or one AWS has already moved on from.
So in this level you get no deep dives. You get a map: every AWS networking service on one page, sorted by the job it does, with its old names and the ones you should no longer build on. Think of it as the floor plan of a building before you start opening doors.
The eight jobs, and the services that do them
| Job | Service | What it does, in one line |
|---|---|---|
| Virtual networks | Amazon VPC (subnets, route tables, internet gateway, NAT gateway) | Your private, isolated network in a Region |
| Amazon VPC IP Address Manager (IPAM) | Plans and tracks your IP address ranges across accounts | |
| Connectivity between networks | VPC peering | A direct, one-to-one private link between two VPCs |
| AWS Transit Gateway | A regional hub router that many VPCs and VPNs attach to | |
| AWS Cloud WAN | A global network run from a central policy, managed in AWS Network Manager | |
| Hybrid links | AWS Site-to-Site VPN | Encrypted IPsec tunnels over the internet to your data centre |
| AWS Client VPN | Managed remote-access VPN for individual users | |
| AWS Direct Connect | A dedicated private circuit from your premises into AWS | |
| Load balancing and delivery | Elastic Load Balancing: ALB, NLB, Gateway Load Balancer | Spreads traffic at layer 7 (ALB) or layer 4 (NLB), or passes it through third-party appliances (GWLB) |
| Amazon CloudFront | CDN: caches content and ends connections close to users | |
| AWS Global Accelerator | Static anycast IPs that carry users onto the AWS backbone | |
| DNS | Amazon Route 53 | Public and private DNS, domain registration, health checks |
| Route 53 Resolver (with DNS Firewall) | DNS inside the VPC, hybrid forwarding rules, domain filtering | |
| AWS Cloud Map | Service discovery: a registry of where your services live | |
| Private access | AWS PrivateLink (VPC endpoints) | Reach a service privately without exposing whole networks |
| Amazon VPC Lattice | Service-to-service networking with auth policies, across VPCs and accounts | |
| AWS Verified Access | Zero-trust access to internal apps, with no VPN | |
| Network security | Security groups and network ACLs | Stateful (security groups) and stateless (NACLs) packet filters in the VPC |
| AWS Network Firewall | Managed stateful firewall and IPS for VPC traffic | |
| AWS WAF | Layer 7 filtering for CloudFront, ALB, API Gateway and more | |
| AWS Shield (Standard and Advanced) | DDoS protection; Standard comes free, Advanced is paid | |
| AWS Firewall Manager | Central policy for WAF, Shield, security groups and firewalls across an organisation | |
| Monitoring | VPC Flow Logs | Records of the IP traffic going in and out of network interfaces |
| Reachability Analyzer and Network Access Analyzer | Checks whether a path exists and whether access is broader than you meant | |
| CloudWatch Network Monitoring | Network Flow Monitor, Network Synthetic Monitor, Internet Monitor | |
| AWS Network Manager | Global view of Transit Gateway and Cloud WAN networks |
Gotcha: some services do more than one job. Route 53 Resolver DNS Firewall is both DNS and security. A NAT gateway is part of VPC, but it is also a big line on the bill. File each service under its main job and note the rest.
Names that changed
Old names live on in blog posts, Terraform modules and job ads, so learn to translate them:
- AWS Transit Gateway Network Manager (2019) became AWS Network Manager. It now manages Cloud WAN as well as Transit Gateway global networks.
- CloudWatch Network Monitor is now Network Synthetic Monitor. It and Internet Monitor sit together under CloudWatch Network Monitoring, next to the newer Network Flow Monitor.
- In AWS WAF, the July 2025 console renamed web ACLs to protection packs. The API, the ARNs and the CLI still say
webacl, so your IaC code does not change. - Elastic Load Balancing at first meant just one load balancer. That one is now called the Classic Load Balancer, and AWS's own docs call it previous generation.
Retired, closed or previous generation
| Service | Status | What AWS points you to |
|---|---|---|
| AWS App Mesh | Closed to new customers 24 Sep 2024; end of support 30 Sep 2026, so it's gone now | Amazon ECS Service Connect (ECS), Amazon VPC Lattice (EKS and cross-VPC) |
| AWS WAF Classic | Retired 30 Sep 2025 | AWS WAF (the wafv2 API) |
| EC2-Classic networking | Retired August 2023 | Amazon VPC |
| AWS Private 5G | End of support 20 May 2025 | none (choose a partner solution) |
| Classic Load Balancer | Still supported, but previous generation | ALB or NLB |
AWS Shield's network security director is still in preview as I write this. Look at it, but don't build a design that depends on it yet.
Walkthrough: audit an account for legacy networking
Once you have the map, the first useful job is finding legacy pieces in a real account. Two CLI checks do most of it:
# 1. Classic Load Balancers use the OLD 'elb' API namespace.
# Any output here is a previous-generation load balancer to plan a migration for.
aws elb describe-load-balancers \
--query 'LoadBalancerDescriptions[].LoadBalancerName' --output table
# 2. Current-generation load balancers use 'elbv2'. Type shows application | network | gateway.
aws elbv2 describe-load-balancers \
--query 'LoadBalancers[].[LoadBalancerName,Type]' --output table
Example output from check 1:
-------------------------
|DescribeLoadBalancers |
+-----------------------+
| legacy-web-2016 | <- Classic LB: move to ALB (HTTP) or NLB (TCP)
+-----------------------+
Next, look through your infrastructure code for the retired services:
# Terraform: WAF Classic resources start with aws_waf_ or aws_wafregional_;
# the current service uses aws_wafv2_. App Mesh resources start with aws_appmesh_.
grep -rnE 'aws_(waf|wafregional|appmesh)_' ./infra
# CloudFormation equivalents: AWS::WAF::*, AWS::WAFRegional::*, AWS::AppMesh::*
# (current WAF is AWS::WAFv2::*)
Best practice: run checks 1 and 2 in every Region you use, since load balancers are regional. For a whole organisation, wrap them in a loop over accounts. Do this before any design review so legacy items come up early, not in the middle of a migration.
How to use this page
When a requirement arrives, say "partners must reach one API in our VPC, and nothing else", first name the job: private access. Then pick from that row: PrivateLink or VPC Lattice. The table does not make the choice for you. Later lessons cover limits, costs and trade-offs. What it does is stop you choosing from the wrong row, such as peering whole networks just to share one service.
Key takeaways
- AWS networking sorts into eight jobs: virtual networks, connectivity between networks, hybrid links, load balancing and delivery, DNS, private access, network security, and monitoring.
- Name the job before you name the service.
- Translate old names: Transit Gateway Network Manager → AWS Network Manager; CloudWatch Network Monitor → Network Synthetic Monitor; WAF web ACLs → protection packs (console only).
- Don't build new designs on App Mesh (ended 30 Sep 2026), WAF Classic (retired 30 Sep 2025), EC2-Classic, or the previous-generation Classic Load Balancer.
- AWS's replacements: ECS Service Connect or VPC Lattice for App Mesh, AWS WAF (
wafv2) for WAF Classic, ALB or NLB for the Classic Load Balancer. - The
elbvselbv2CLI namespaces are a quick way to find legacy load balancers.