Fix an AWS EC2 instance that will not start or pass checks
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.