AWS

EC2InvalidInstanceIDNotFound - EC2 Invalid Instance ID Not Found

Getting an **EC2InvalidInstanceIDNotFound** error means the EC2 instance ID you specified doesn't exist or has been terminated—the instance might be in a different region, was deleted, or the ID is misspelled. This client-side error (4xx) happens when AWS validates EC2 instance existence. Most common when instance IDs are incorrect, but also appears when instances have been terminated, instances are in different regions, instance ID formats are incorrect, or instance ID typos occur.

#Common Causes

  • Identity: IAM policy allows EC2 access but instance doesn't exist. Service Control Policy (SCP) restricts instance access.
  • Network: VPC endpoint EC2 instance restrictions. Cross-region instance access.
  • Limits: Instance ID does not exist. Instance has been terminated. Instance in different region. Incorrect instance ID format. Instance ID typo.

Solutions

  1. 1Step 1: Diagnose - List all EC2 instances: aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' --output table. Check if instance ID is in the list.
  2. 2Step 2: Diagnose - Check instance in specific region: aws ec2 describe-instances --instance-ids i-XXXXX --region REGION --query 'Reservations[0].Instances[0].[InstanceId,State.Name]' --output table. Verify region is correct.
  3. 3Step 3: Diagnose - Search for similar instance IDs: List instances and search: aws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId' --output text | grep PARTIAL_ID. Find correct instance ID.
  4. 4Step 4: Fix - Use correct instance ID: Verify instance ID from list. Check for typos. Use exact instance ID (case-sensitive). Verify instance ID format: i-xxxxxxxxxxxxxxxxx.
  5. 5Step 5: Fix - Check if instance was terminated: Review instance state: aws ec2 describe-instances --instance-ids i-XXXXX --query 'Reservations[0].Instances[0].State.Name' --output text. If terminated, instance no longer exists. Check CloudTrail logs for termination events.

</>Code Examples

List All EC2 Instances to Find Correct ID
1#!/bin/bash
2echo "=== All EC2 Instances ==="
3aws ec2 describe-instances \
4  --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType,Tags[?Key==`Name`].Value|[0]]' \
5  --output table
6
7# Search for specific instance
8INSTANCE_ID="i-1234567890abcdef0"
9echo "\n=== Searching for Instance: ${INSTANCE_ID} ==="
10
11if aws ec2 describe-instances --instance-ids ${INSTANCE_ID} &>/dev/null; then
12  echo "✓ Instance exists"
13  
14  # Get instance details
15  echo "\n=== Instance Details ==="
16  aws ec2 describe-instances \
17    --instance-ids ${INSTANCE_ID} \
18    --query 'Reservations[0].Instances[0].[InstanceId,State.Name,InstanceType,LaunchTime]' \
19    --output table
20else
21  echo "✗ Instance not found (EC2InvalidInstanceIDNotFound)"
22  
23  echo "\n=== Similar Instance IDs ==="
24  aws ec2 describe-instances \
25    --query "Reservations[*].Instances[?contains(InstanceId, 'i-123')].[InstanceId,State.Name]" \
26    --output table
27fi
Check EC2 Instance Across Regions
1#!/bin/bash
2INSTANCE_ID="i-1234567890abcdef0"
3REGIONS=("us-east-1" "us-west-2" "eu-west-1" "ap-southeast-1")
4
5echo "=== Checking Instance Across Regions ==="
6for REGION in "${REGIONS[@]}"; do
7  echo "\nChecking region: ${REGION}"
8  
9  RESULT=$(aws ec2 describe-instances \
10    --instance-ids ${INSTANCE_ID} \
11    --region ${REGION} \
12    --query 'Reservations[0].Instances[0].InstanceId' \
13    --output text 2>/dev/null)
14  
15  if [ ! -z "${RESULT}" ] && [ "${RESULT}" != "None" ]; then
16    echo "✓ Instance found in ${REGION}: ${RESULT}"
17    
18    # Get instance details
19    aws ec2 describe-instances \
20      --instance-ids ${INSTANCE_ID} \
21      --region ${REGION} \
22      --query 'Reservations[0].Instances[0].[InstanceId,State.Name,InstanceType]' \
23      --output table
24    break
25  else
26    echo "✗ Instance not found in ${REGION}"
27  fi
28done
Check Instance State and Termination Status
1#!/bin/bash
2INSTANCE_ID="i-1234567890abcdef0"
3
4echo "=== Checking Instance State ==="
5INSTANCE_STATE=$(aws ec2 describe-instances \
6  --instance-ids ${INSTANCE_ID} \
7  --query 'Reservations[0].Instances[0].State.Name' \
8  --output text 2>&1)
9
10if [ $? -eq 0 ] && [ ! -z "${INSTANCE_STATE}" ]; then
11  echo "Instance state: ${INSTANCE_STATE}"
12  
13  if [ "${INSTANCE_STATE}" = "terminated" ]; then
14    echo "✗ Instance has been terminated"
15    echo "Terminated instances no longer exist (EC2InvalidInstanceIDNotFound)"
16  elif [ "${INSTANCE_STATE}" = "running" ] || [ "${INSTANCE_STATE}" = "stopped" ]; then
17    echo "✓ Instance exists and is ${INSTANCE_STATE}"
18  else
19    echo "Instance state: ${INSTANCE_STATE}"
20  fi
21else
22  echo "✗ Instance not found (EC2InvalidInstanceIDNotFound)"
23  echo "Error: ${INSTANCE_STATE}"
24  
25  echo "\n=== Check CloudTrail for Termination Events ==="
26  echo "aws cloudtrail lookup-events \"
27  echo "  --lookup-attributes AttributeKey=EventName,AttributeValue=TerminateInstances"
28fi

Related Errors

Provider Information

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

EC2InvalidInstanceIDNotFound - EC2 Invalid Instance ID Not Found | AWS Error Reference | Error Code Reference