CRITICAL

How to Fix AWS EC2 Instance Limit Exceeded Error (2025 Service Quotas)

Quick Fix Summary

TL;DR

Request an immediate quota increase via the AWS Service Quotas console or API to restore instance provisioning.

This error occurs when you attempt to launch or start an EC2 instance, but your AWS account has reached its service quota (limit) for a specific resource type, such as vCPUs for a particular instance family. The request is blocked until the quota is increased or existing resources are terminated.

Diagnosis & Causes

  • Account-level vCPU quota for an instance family is exhausted.
  • Regional On-Demand Instance limit has been reached.
  • Auto Scaling group triggered a scale-out beyond current limits.
  • Spike in demand from new deployments or disaster recovery.
  • Consolidated usage from multiple teams exceeding baseline quota.
  • Recovery Steps

    1

    Step 1: Identify the Specific Quota Limit

    First, determine which exact quota you've hit. Use the AWS CLI to list your current EC2 quotas and usage. Focus on 'Running On-Demand' instances.

    bash
    aws service-quotas list-service-quotas --service-code ec2 --region us-east-1
    aws service-quotas get-service-quota --service-code ec2 --quota-code L-1216C47A --region us-east-1
    2

    Step 2: Request a Quota Increase via Console (Immediate)

    Navigate to the Service Quotas console to submit a support case for a quota increase. Provide a detailed business justification for faster approval.

    markdown
    # 1. Open AWS Console -> Service Quotas.
    # 2. Select 'Amazon EC2' service.
    # 3. Find quota (e.g., 'Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances').
    # 4. Click 'Request quota increase'.
    # 5. Enter new limit value and required justification.
    3

    Step 3: Programmatic Quota Increase Request (API/CLI)

    For automation or Infrastructure-as-Code workflows, use the AWS CLI or SDK to request a quota increase. This is essential for CI/CD pipelines.

    bash
    aws service-quotas request-service-quota-increase \
      --service-code ec2 \
      --quota-code L-1216C47A \
      --desired-value 256 \
      --region us-east-1
    4

    Step 4: Immediate Mitigation - Terminate Unused Instances

    While waiting for a quota increase, free up capacity by identifying and terminating non-critical, stopped, or idle instances.

    bash
    # List all instances, filter by state and tags
    aws ec2 describe-instances --query 'Reservations[].Instances[?State.Name==`stopped`].[InstanceId, Tags[?Key==`Environment`].Value|[0]]' --output text
    # Terminate specific instance (CAUTION: Irreversible)
    aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
    5

    Step 5: Switch to Alternative Capacity (Spot/Different Family)

    If your workload allows, launch Spot Instances or use a different instance family where you have available vCPU quota to bypass the immediate block.

    bash
    # Launch a Spot Instance request
    aws ec2 request-spot-instances --instance-count 1 --launch-specification file://specification.json
    # Or, launch in a different instance family (e.g., from 'c5' to 'm5')
    aws ec2 run-instances --image-id ami-abc12345 --instance-type m5.large --count 1
    6

    Step 6: Implement Proactive Quota Monitoring

    Set up CloudWatch Alarms on your critical quotas to get alerts before you hit the limit, preventing future outages.

    bash
    # Create CloudWatch Metric Alarm for quota usage (example)
    aws cloudwatch put-metric-alarm \
      --alarm-name "EC2-vCPU-Quota-80-Percent" \
      --metric-name "ResourceCount" \
      --namespace "AWS/Usage" \
      --statistic Average \
      --period 300 \
      --threshold 80 \
      --comparison-operator GreaterThanOrEqualToThreshold \
      --dimensions Name=Service,Value=EC2 Name=Type,Value=Resource Name=Resource,Value=vCPU \
      --evaluation-periods 1

    Architect's Pro Tip

    "For Critical Production (SEV-1) issues, call AWS Support *while* submitting the quota increase request. Reference the support case ID in your console request justification to trigger an expedited review, often resolving it in under an hour."

    Frequently Asked Questions

    How long does an AWS quota increase take to approve?

    Standard requests can take 24-48 hours. For business-critical production outages, contacting AWS Support to expedite can reduce approval time to 1-2 hours. Have your Business Impact description ready.

    What's the difference between an EC2 limit and a Service Quota?

    They are the same. 'Limit' is the older term used in EC2 APIs (e.g., DescribeAccountAttributes). 'Service Quota' is the modern, centralized service for managing all AWS limits across services.

    Can I set quotas on a per-IAM-user or per-VPC basis?

    No. EC2 vCPU and instance count quotas are applied at the AWS account level, per region. For finer-grained control, you must implement guardrails using IAM policies, AWS Organizations SCPs, or third-party tools.

    Related AWS Guides