Fix AWS EC2 that will not start

We'll check instance state, status checks, limits, and system logs—using AWS CLI commands—or tell you when to contact support.

Category
Troubleshooting · AWS & cloud
Time
15–30 min
Last reviewed
What you'll need
  • AWS CLI configured with credentials
  • Instance ID (e.g. i-0123456789abcdef0)
  • Permissions for ec2:DescribeInstances, ec2:DescribeInstanceStatus, ec2:StartInstances, ec2:StopInstances, ec2:GetConsoleOutput

Step-by-step diagnostic

Step 1 of 9
Show full guide

Steps

Goal: Get your EC2 instance running by checking state, status checks, limits, and system logs.

  • Run aws ec2 describe-instances --instance-ids i-xxxxx to check state and reason.
  • Good: Proceed to Check instance state.
  • Bad: Confirm instance ID and region.

Check instance state

Goal: Understand why the instance will not start.

  • Run aws ec2 describe-instances --instance-ids i-xxxxx --query "Reservations[0].Instances[0].{State:State.Name,Reason:StateReason.Message}".
  • Check the Reason field. Capacity errors: try different instance type or Availability Zone. Limit errors: terminate unused instances or request increase. Volume errors: check EBS attachment.
  • Good: You have a clear reason. Proceed to Check status checks or fix the specific issue.
  • Bad: Try stop and start.

Check status checks

Goal: Distinguish AWS infrastructure failure from OS failure.

  • Run aws ec2 describe-instance-status --instance-ids i-xxxxx.
  • System status failure: AWS infrastructure. Stop and start the instance (not reboot) to migrate to new hardware.
  • Instance status failure: OS problem. Run aws ec2 get-console-output --instance-id i-xxxxx --output text and check for out-of-memory, I/O errors, or kernel errors.
  • Good: You know which check failed. Apply the fix.
  • Bad: Instance may still be initializing—wait a few minutes and retry.

Stop and start for system failure

Goal: Migrate the instance to new hardware when system status fails.

  • Run aws ec2 stop-instances --instance-ids i-xxxxx. Wait until the state is stopped.
  • Run aws ec2 start-instances --instance-ids i-xxxxx.
  • Stop and start moves the instance to new physical hardware. Reboot does not.
  • Good: Instance enters running and status checks pass.
  • Bad: Get console output and check limits.

Get console output for instance failure

Goal: Find the OS-level error when instance status fails.

  • Run aws ec2 get-console-output --instance-id i-xxxxx --output text.
  • Look for “Out of memory: kill process”, “I/O error (block device failure)”, “VFS: Unable to mount root fs”, or kernel/AMI mismatch errors.
  • OOM: resize to a larger instance type. I/O or root fs: snapshot the volume, create a new instance. Kernel/AMI: use a compatible AMI.
  • Good: You identify the error and apply the fix.
  • Bad: Contact AWS support with the console output.

Check limits

Goal: Rule out instance or EBS volume limits.

  • Check Service Quotas for EC2 instance limits. Run aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=i-xxxxx to list attached volumes.
  • When at limit, terminate unused instances or detach unused volumes. Request a limit increase if needed.
  • Good: Under limit. Bad: Free capacity or request increase.

When to get help

Contact AWS support if:

  • The instance fails to start after stop/start and limit checks.
  • You see repeated capacity errors across instance types and AZs.
  • Status checks fail repeatedly and console output does not show a fixable error.

Provide the instance ID, region, state-reason from describe-instances, and console output from get-console-output. Check the AWS Service Health Dashboard for outages.

Verification

  • aws ec2 describe-instances --instance-ids i-xxxxx shows State.Name: running.
  • aws ec2 describe-instance-status --instance-ids i-xxxxx shows system and instance status as passed (or initializing).
  • You can SSH or connect to the instance (if security groups and network allow).

Escalation ladder

Work from the device outward. Stop when the problem is fixed.

  1. Instance state and reason Run describe-instances; check state-reason for capacity or limit errors.
  2. Status checks Run describe-instance-status; system failure → stop/start; instance failure → console output.
  3. Limits Check instance and EBS limits; terminate or detach if at limit.
  4. Different type or AZ Modify instance type or move to another subnet/AZ.
  5. New instance from snapshot Snapshot root volume, create new instance if corrupted.
  6. Contact AWS support Provide instance ID, region, state-reason, console output.

What to capture if you need help

Before calling support or posting for help, have these ready. It speeds everything up.

  • Instance ID and region
  • Output of aws ec2 describe-instances for the instance
  • Output of aws ec2 describe-instance-status
  • Console output from aws ec2 get-console-output
  • Steps already tried

Does describe-instances show a state-reason?

The state-reason explains why the instance is stopped or failed to start.

Run `aws ec2 describe-instances --instance-ids i-xxxxx --query "Reservations[0].Instances[0].{State:State.Name,Reason:StateReason.Message}"`. Good: you see a reason—proceed to interpret it. Bad: instance not found or wrong ID—check the instance ID and region.

You can change your answer later.

Check instance ID and region

Confirm the instance ID (starts with i-) and that you are in the correct region (`aws configure get region` or `--region`). Retry describe-instances.

Is the reason capacity, limit, or volume-related?

Capacity and limit errors often need a different instance type, AZ, or limit increase.

Check the Reason field. Capacity/InsufficientCapacity: try different instance type or AZ. Limit (e.g. vCPU): terminate unused instances or request limit increase. Volume: check EBS attachment. Other: try stop and start.

You can change your answer later.

Try different type or AZ

Stop the instance. Modify instance type with `aws ec2 modify-instance-attribute`. Or launch in a different subnet/AZ. Start the instance. If still fails, check Service Quotas and request increase.

Is the instance running but failing status checks?

describe-instance-status shows system and instance status.

Run `aws ec2 describe-instance-status --instance-ids i-xxxxx`. System status failed: stop and start (not reboot). Instance status failed: run `aws ec2 get-console-output` and check logs for OOM, I/O, or kernel errors.

You can change your answer later.

System or instance status failed?

System = AWS infra. Instance = OS.

System: stop and start to migrate to new hardware. Instance: get console output, look for "Out of memory", "I/O error", "VFS: Unable to mount root fs". Fix per error type or create new instance from snapshot.

You can change your answer later.

Stop and start

Run `aws ec2 stop-instances --instance-ids i-xxxxx`. Wait for stopped. Run `aws ec2 start-instances --instance-ids i-xxxxx`. The instance moves to new hardware. Check status again.

Check console output and fix

Run `aws ec2 get-console-output --instance-id i-xxxxx`. OOM: resize instance. I/O/root fs: snapshot volume, launch new instance. Kernel/AMI mismatch: use compatible AMI.

Try stop and start

Run `aws ec2 stop-instances` then `aws ec2 start-instances`. If still fails, get console output and check limits. Contact AWS support with instance ID, region, state-reason, and console output.

Reviewed by Blackbox Atlas

Frequently asked questions

Why would an EC2 instance not start?
Instance limit reached, EBS volume limit, VPC capacity, failed status checks, or corrupted root volume. Check describe-instances for state-reason and describe-instance-status for status checks.
What is the difference between system and instance status checks?
System status checks AWS infrastructure (hardware, power, network). Instance status checks the OS (kernel, memory, file system). System failure: stop and start. Instance failure: check console output and logs.
When should I contact AWS support?
If the instance fails to start after stop/start, you see capacity errors, or status checks fail repeatedly. Provide instance ID, region, and state-reason from describe-instances.

Rate this guide

Was this helpful?

Thanks for your feedback.

Continue to