Introduction

When you try to start an EC2 instance, it transitions from 'stopped' to 'pending', but instead of reaching 'running', it either fails immediately or gets stuck in pending state and then stops. The error could be at the hypervisor level, EBS level, network level, or within the instance itself.

Symptoms

In the AWS Console:

bash
Instance failed to start
State: stopped
State transition reason: Server.InternalError

Via AWS CLI:

bash
$ aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --query 'Reservations[*].Instances[*].StateReason'
{
  "Code": "Server.InternalError",
  "Message": "Internal error on launch"
}

Common state reason codes:

CodeMeaning
Server.InternalErrorAWS-side infrastructure issue
Server.SpotInstanceTerminationSpot capacity no longer available
Client.VolumeLimitExceededEBS volume limit reached
Client.InsufficientInstanceCapacityNot enough host capacity
Client.InvalidParameterInvalid configuration parameter

Common Causes

  1. 1.Insufficient capacity - AZ doesn't have available hosts for the instance type
  2. 2.EBS attachment failure - Volume doesn't exist, is in wrong AZ, or limit exceeded
  3. 3.AMI issues - AMI doesn't exist, is deregistered, or has wrong architecture
  4. 4.Security group limits - Too many rules or groups attached
  5. 5.ENI issues - Network interface doesn't exist or is attached elsewhere
  6. 6.Instance store conflicts - Instance store volumes not available
  7. 7.IAM instance profile - Profile doesn't exist or lacks permissions
  8. 8.Placement group - Can't fulfill placement constraints

Step-by-Step Fix

  1. 1.Check logs for specific error messages
  2. 2.Verify configuration settings
  3. 3.Test network connectivity
  4. 4.Review recent changes
  5. 5.Apply corrective action
  6. 6.Verify the fix

Step 1: Check State Reason and Error Code

bash
aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \
  --query 'Reservations[*].Instances[*].[State.Name, StateReason.Code, StateReason.Message]'

This gives you the specific error code to diagnose.

Step 2: Check Capacity Issues

If Client.InsufficientInstanceCapacity:

```bash # Try a different AZ aws ec2 describe-instance-type-offerings --location-type availability-zone \ --filters Name=instance-type,Values=c5.2xlarge Name=location,Values=us-east-1a

# Check current capacity in region aws ec2 describe-instance-types --instance-types c5.2xlarge \ --query 'InstanceTypes[*].[InstanceType, FreeTierEligible]' ```

Solutions: - Launch in a different AZ - Try a different instance type - Use Spot instances with capacity-optimized allocation - Wait and retry (capacity fluctuates)

Step 3: Verify EBS Volumes

Check if volumes exist and are available:

```bash aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=i-1234567890abcdef0

# Check all volumes in the correct AZ aws ec2 describe-volumes --filters Name=availability-zone,Values=us-east-1a ```

Verify volume limits:

bash
# Check your account EBS limits
aws service-quotas get-service-quota --service-code ebs --quota-code L-D18ECD67

Common issues: - Volume was deleted - Volume is in different AZ than the instance - Account reached maximum number of volumes - Volume is encrypted but KMS key is not accessible

Step 4: Check AMI and Architecture

```bash # Get instance's AMI aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \ --query 'Reservations[*].Instances[*].ImageId'

# Verify AMI exists aws ec2 describe-images --image-ids ami-12345678

# Check AMI architecture matches instance type aws ec2 describe-images --image-ids ami-12345678 \ --query 'Images[*].[ImageId, Architecture, VirtualizationType]' ```

Issues: - AMI was deregistered - Architecture mismatch (arm64 vs x86_64) - AMI is not available in this region

Step 5: Check Network Configuration

Verify security groups and ENIs:

```bash # Check attached security groups aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \ --query 'Reservations[*].Instances[*].SecurityGroups'

# Check ENI status aws ec2 describe-network-interfaces --filters Name=attachment.instance-id,Values=i-1234567890abcdef0

# Verify ENI exists aws ec2 describe-network-interfaces --network-interface-ids eni-12345 ```

Step 6: Check Instance Profile

```bash # Get instance profile aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \ --query 'Reservations[*].Instances[*].IamInstanceProfile'

# Verify the role exists aws iam get-instance-profile --instance-profile-name my-instance-profile ```

If the role was deleted, the instance won't start.

Step 7: Check Console Output

For clues about why the instance stopped:

bash
aws ec2 get-console-output --instance-id i-1234567890abcdef0 --output text

Look for: - Kernel panic - Init system errors - Disk mounting failures - Network configuration errors

Step 8: Force Instance Recovery

If the host is having issues:

bash
# Stop and start (moves to a new host)
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 start-instances --instance-ids i-1234567890abcdef0

Or for more drastic measures:

bash
# Create AMI from stopped instance and launch new
aws ec2 create-image --instance-id i-1234567890abcdef0 --name "recovery-image"

Step 9: Check for Instance Store Issues

If your instance uses instance store volumes:

bash
aws ec2 describe-instance-types --instance-types c5.2xlarge \
  --query 'InstanceTypes[*].InstanceStorageInfo'

Instance store volumes are ephemeral and data is lost when stopped. If the instance expects data on instance store that's no longer available, it may fail to start.

Verification

```bash # Check instance state aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \ --query 'Reservations[*].Instances[*].State.Name'

# Should return: "running"

# Check system status aws ec2 describe-instance-status --instance-id i-1234567890abcdef0 ```

  • [Fix AWS EC2 Instance Stuck in Stopping State](/articles/fix-aws-ec2-instance-stuck-stopping)
  • [Fix AWS EC2 Status Check Failed](/articles/fix-aws-ec2-status-check-failed)
  • [Fix AWS EC2 EBS Volume Attachment Failed](/articles/fix-aws-ec2-ebs-volume-attachment-failed)
  • [AWS troubleshooting: Fix IAM Permission Denied - Complete Tro](fix-iam-permission-denied)
  • [AWS cloud troubleshooting: AWS ACM Certificate Pending Validation Because the](aws-acm-certificate-pending-validation-wrong-route53-zone)
  • [AWS cloud troubleshooting: AWS ALB Returns 502 Because the Target Closed the ](aws-alb-502-target-closed-connection-keepalive-timeout-mismatch)
  • [AWS cloud troubleshooting: Fix AWS ALB CreateListener TargetGroupNotFound Err](aws-alb-createlistener-targetgroupnotfound)
  • [AWS cloud troubleshooting: Fix Aws Alb Lambda 502 Bad Gateway Issue in AWS](aws-alb-lambda-502-bad-gateway)

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Fix AWS EC2 Instance Not Starting", "description": "Troubleshoot EC2 instance startup failures. Fix capacity errors, EBS attachment issues, AMI problems, and instance store conflicts.", "url": "https://www.fixwikihub.com/fix-aws-ec2-instance-not-starting", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2026-04-01T01:40:26.856Z", "dateModified": "2026-04-01T01:40:26.856Z" } </script>