Creating AWS Virtual Private Cloud
Perhaps, one of the best features of AWS is VPC (Virtual Private Cloud).
In the essence, VPC is a virtual network that you can divide into subnets. Some subnets can be public (with access to the Internet), and some are private. You can define routing between subnets, and by default, they can freely access each other. You can also create VPN to your VPC, add NAT gateways, manage DHCP options, and define ACLs for your networks. VPC is a complex service with many subtools and options. For our purpose, we will use only a subset of them, though.
Note
Typical use case for VPC:
Keeping publicly accessible web servers in public subnet and database servers in private one and enable secure connection between cloud resources and on-premise machines.
Security groups are also a part of AWS VPC. With security groups, you can define inbound and outbound firewall rules and then you can attach these groups to EC2 instances. As a source of traffic for these rules, you...