Back to Checks
VPCs are present in more than one region
vpc_different_regions
Service: vpcSeverity: medium
OfficialBuilt-inVerified
Categories:resilience
Resource Type:AwsEc2Vpc
Non-default VPCs are evaluated across the account to determine whether they exist in more than one region. The result reflects if your custom network topology is regionally distributed or concentrated in a single region.
Risk
Single-region VPC deployment weakens availability and resilience. A regional outage, service disruption, or network control misconfiguration can cause broad downtime, hinder recovery, and increase the blast radius of incidents impacting business continuity.
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks vpc_different_regionsRecommendation
Adopt a multi-region network design:
- Create VPCs in at least two regions for critical workloads
- Replicate routing, security controls, and endpoints consistently
- Apply fault tolerance and defense in depth with data replication and resilient DNS/failover to avoid single-region dependency
Remediation
CLI
aws ec2 create-vpc --region <OTHER_REGION> --cidr-block <CIDR_BLOCK>Terraform
provider "aws" {
alias = "other"
region = "<OTHER_REGION>" # Critical: ensures the VPC is created in a second region
}
resource "aws_vpc" "<example_resource_name>" {
provider = aws.other
cidr_block = "10.0.0.0/16" # Critical: creates a non-default VPC in that region
}NativeIaC
# Deploy this stack in a second AWS region to pass the check
Resources:
<example_resource_name>:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16 # Critical: creates a non-default VPC in this regionOther
1Open the AWS Console and go to VPC
2In the Region selector (top right), choose a different region than your existing non-default VPCs
3Click Create VPC > VPC only
4Enter an IPv4 CIDR block (e.g., 10.0.0.0/16)
5Click Create VPC
6Verify a non-default VPC now exists in this second region
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.vpc.vpc_client import vpc_client
class vpc_different_regions(Check):
def execute(self):
findings = []
if len(vpc_client.vpcs) > 0:
vpc_regions = set()
for vpc in vpc_client.vpcs.values():
if not vpc.default:
vpc_regions.add(vpc.region)
report = Check_Report_AWS(
metadata=self.metadata(), resource=vpc_client.vpcs
)
report.region = vpc_client.region
report.resource_id = vpc_client.audited_account
report.resource_arn = vpc_client.vpc_arn_template
report.status = "FAIL"
report.status_extended = "VPCs found only in one region."
if len(vpc_regions) > 1:
report.status = "PASS"
report.status_extended = "VPCs found in more than one region."
findings.append(report)
return findings