A Terraform module for provisioning AWS VPCs with configurable subnets, NAT gateways, VPN gateways, and network ACLs.
terraform-aws-vpc is a Terraform module that automates the creation and configuration of AWS Virtual Private Cloud resources. It provides a high-level abstraction for defining VPCs, subnets, route tables, NAT gateways, VPN gateways, and network ACLs using Terraform's declarative syntax. The module solves the problem of manually writing repetitive Terraform code for AWS networking by offering a comprehensive, configurable solution.
DevOps engineers, cloud infrastructure teams, and platform engineers who use Terraform to manage AWS environments and need to provision standardized, production-ready VPC configurations.
Developers choose this module because it's maintained by the Terraform AWS Modules community, follows AWS best practices, reduces boilerplate code significantly, and offers extensive customization options while handling complex networking scenarios like NAT gateway strategies and IPv6 deployments.
Terraform module to create AWS VPC resources 🇺🇦
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports three scenarios: one NAT gateway per subnet, single NAT gateway, or one per availability zone, allowing teams to balance cost and availability as detailed in the NAT Gateway Scenarios section.
Provides distinct subnet types for private (with NAT access) and intra (no internet routing) use cases, useful for services like AWS Lambda, reducing manual routing work.
Enables dual-stack VPCs and IPv6-only subnets, with support for AWS IP Address Manager, though it requires pre-calculation of CIDRs due to Terraform limitations.
Follows infrastructure-as-code best practices, offers extensive examples, and is maintained as part of the terraform-aws-modules ecosystem, ensuring reliability for enterprise use.
VPC Flow Log creation is deprecated in v6.x and will be removed in v7.0.0, forcing users to migrate to a separate module, which can break existing setups.
With over 100 input variables, optimizing the module requires significant AWS networking knowledge, making it daunting for newcomers or simple projects.
Integrating with AWS IPAM requires manual CIDR calculation outside the module, as admitted in the README due to race conditions with Terraform plan, adding extra steps.