AWS

EC2InvalidSubnetIDNotFound - EC2 Invalid Subnet ID Not Found

Getting an **EC2InvalidSubnetIDNotFound** error means the EC2 subnet ID you specified doesn't exist—the subnet might be in a different VPC or region, was deleted, or the ID is misspelled. This client-side error (4xx) happens when AWS validates EC2 subnet existence. Most common when subnet IDs don't exist, but also appears when subnets are in different VPCs, subnets are in different regions, subnets have been deleted, or incorrect subnet ID formats are used.

#Common Causes

  • Identity: IAM policy allows EC2 launch but subnet doesn't exist. Service Control Policy (SCP) restricts subnet access.
  • Network: VPC endpoint EC2 subnet restrictions. Subnet in different VPC. Subnet in different region.
  • Limits: Subnet ID does not exist. Subnet in different VPC. Subnet in different region. Subnet has been deleted. Incorrect subnet ID format.

Solutions

  1. 1Step 1: Diagnose - List all subnets: aws ec2 describe-subnets --query 'Subnets[*].[SubnetId,VpcId,AvailabilityZone,CidrBlock]' --output table. Check if subnet ID is in the list.
  2. 2Step 2: Diagnose - List subnets in specific VPC: aws ec2 describe-subnets --filters "Name=vpc-id,Values=VPC_ID" --query 'Subnets[*].[SubnetId,AvailabilityZone,CidrBlock]' --output table. Verify subnet exists in current VPC.
  3. 3Step 3: Diagnose - List subnets by availability zone: aws ec2 describe-subnets --filters "Name=availability-zone,Values=AZ" --query 'Subnets[*].[SubnetId,VpcId]' --output table. Find subnet in correct AZ and VPC.
  4. 4Step 4: Fix - Use correct subnet ID: Verify subnet ID from list. Check for typos. Use exact subnet ID (case-sensitive). Verify subnet exists in current VPC and region.
  5. 5Step 5: Fix - Create new subnet if needed: Create subnet: aws ec2 create-subnet --vpc-id VPC_ID --cidr-block CIDR --availability-zone AZ. Or use existing subnet in correct VPC.

</>Code Examples

List All EC2 Subnets to Find Correct ID
1#!/bin/bash
2echo "=== All Subnets ==="
3aws ec2 describe-subnets \
4  --query 'Subnets[*].[SubnetId,VpcId,AvailabilityZone,CidrBlock]' \
5  --output table
6
7# Search for specific subnet
8SUBNET_ID="subnet-1234567890abcdef0"
9echo "\n=== Searching for Subnet: ${SUBNET_ID} ==="
10
11if aws ec2 describe-subnets --subnet-ids ${SUBNET_ID} &>/dev/null; then
12  echo "✓ Subnet exists"
13  
14  # Get subnet details
15  aws ec2 describe-subnets --subnet-ids ${SUBNET_ID} \
16    --query 'Subnets[0].[SubnetId,VpcId,AvailabilityZone,CidrBlock]' \
17    --output table
18else
19  echo "✗ Subnet not found (EC2InvalidSubnetIDNotFound)"
20fi
List Subnets in Specific VPC
1#!/bin/bash
2VPC_ID="vpc-1234567890abcdef0"
3
4echo "=== Subnets in VPC ==="
5echo "VPC ID: ${VPC_ID}"
6
7aws ec2 describe-subnets \
8  --filters "Name=vpc-id,Values=${VPC_ID}" \
9  --query 'Subnets[*].[SubnetId,AvailabilityZone,CidrBlock,AvailableIpAddressCount]' \
10  --output table
11
12# List subnets by availability zone
13AZ="us-east-1a"
14echo "\n=== Subnets in Availability Zone: ${AZ} ==="
15aws ec2 describe-subnets \
16  --filters "Name=availability-zone,Values=${AZ}" \
17  --query 'Subnets[*].[SubnetId,VpcId]' \
18  --output table
Create New EC2 Subnet
1#!/bin/bash
2VPC_ID="vpc-1234567890abcdef0"
3CIDR_BLOCK="10.0.1.0/24"
4AZ="us-east-1a"
5
6echo "=== Creating New Subnet ==="
7echo "VPC ID: ${VPC_ID}"
8echo "CIDR Block: ${CIDR_BLOCK}"
9echo "Availability Zone: ${AZ}"
10
11SUBNET_ID=$(aws ec2 create-subnet \
12  --vpc-id ${VPC_ID} \
13  --cidr-block ${CIDR_BLOCK} \
14  --availability-zone ${AZ} \
15  --query 'Subnet.SubnetId' \
16  --output text 2>&1)
17
18if [ $? -eq 0 ] && [ ! -z "${SUBNET_ID}" ]; then
19  echo "\n✓ Subnet created: ${SUBNET_ID}"
20  
21  echo "\n=== Subnet Details ==="
22  aws ec2 describe-subnets --subnet-ids ${SUBNET_ID} \
23    --query 'Subnets[0].[SubnetId,VpcId,AvailabilityZone,CidrBlock]' \
24    --output table
25else
26  echo "\n✗ Failed to create subnet"
27  echo "Error: ${SUBNET_ID}"
28  echo "Check VPC ID, CIDR block, and availability zone"
29fi

Related Errors

Provider Information

This error code is specific to AWS services. For more information, refer to the official AWS documentation.

EC2InvalidSubnetIDNotFound - EC2 Invalid Subnet ID Not Found | AWS Error Reference | Error Code Reference