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.
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
Quick triage — pick your path
Get started
Choose the option that matches what you see. You can jump straight to that section.
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-xxxxxto 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 textand 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-xxxxxto 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-xxxxxshowsState.Name: running.aws ec2 describe-instance-status --instance-ids i-xxxxxshows 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.
- Instance state and reason Run describe-instances; check state-reason for capacity or limit errors.
- Status checks Run describe-instance-status; system failure → stop/start; instance failure → console output.
- Limits Check instance and EBS limits; terminate or detach if at limit.
- Different type or AZ Modify instance type or move to another subnet/AZ.
- New instance from snapshot Snapshot root volume, create new instance if corrupted.
- 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.
You can change your answer later.
Check instance ID and region
Is the reason capacity, limit, or volume-related?
Capacity and limit errors often need a different instance type, AZ, or limit increase.
You can change your answer later.
Try different type or AZ
Is the instance running but failing status checks?
describe-instance-status shows system and instance status.
You can change your answer later.
System or instance status failed?
System = AWS infra. Instance = OS.
You can change your answer later.
Stop and start
Check console output and fix
Try stop and start
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.