EC2 Cost Cutting Playbook

  1. Review CloudWatch CPU metrics

    Check Maximum CPU Utilization over the last month (excluding startup spikes). If it’s below 50%, downsize while retaining the same RAM. For example: c6.2xlarge → m6.xlarge → r6.large (same RAM/CPU type; r6.large has ¼ the vCPUs of c6.2xlarge).

  2. Track RAM usage

    RAM isn’t monitored by default in CloudWatch. Install the CloudWatch Agent to capture RAM utilization. If average RAM usage is below 50%, downsize from higher‑RAM to lower‑RAM types i.e r6.large → m6.large or m6.large → c6.large.

    Alternatively, spin up a test workload on a smaller‑RAM instance: if it runs fine, you’ve unlocked ~10% savings.

  3. Validate bursting credit costs

    If you run T3 instances in “unlimited” mode, it costs ~$0.05/CPU‑hour extra for any usage above the allowed baseline. On t instances above t3.medium at >40% utilization, switch to the equivalent m series instance.

  4. Audit and reclaim idle instances

    Order your instances by launch time (oldest first). Identify the owner and purpose, then message them:
    “Hey, I understand you’re using EC2 instance (Name/ID X, IP Y, Key Pair Z). Are you still using it?” If abandoned, terminate it. If they might reuse it, propose stopping it now and restarting later. Nothing’s cheaper than a terminated instance.

  5. Purchase Savings Plans

    After doing the above, commit to an EC2 Savings Plan for your baseline usage. It delivers the highest ROI for minimal effort—often saving thousands per month with a single click.

    It's really important that you complete the above steps before you purchase savings plans. Once you commit to spending that money with AWS you're going to have to pay the full amount, even if you realise you didn't need that much compute to begin with.