GreenOps

© 2026 GreenOps. All rights reserved.

npx greenops-scanBlogPrivacy PolicyTermsRefund PolicyMethodology
GreenOps
ProblemSolutionPricingBlognpx greenops-scan
Sign in / Sign upFree audit
← Back to blog
GreenOps dashboard preview

The Bill You Don't See Coming: AWS Extended Support Surcharges

AWS doesn't just deprecate old versions — it bills you for keeping them

Most cost-optimization conversations focus on things you can see: an oversized EC2 instance, an idle RDS database, a forgotten EBS snapshot. But AWS has quietly built a second category of cost risk that is much easier to miss — Extended Support surcharges for running outdated engine versions past their standard support window.

The mechanism is simple and, for many teams, invisible until the invoice arrives:

  1. AWS ends "standard support" for a Lambda runtime, an RDS/Aurora engine version, an EKS Kubernetes version, an ElastiCache Redis version, or an OpenSearch/Elasticsearch domain version.
  2. Instead of just cutting you off, AWS auto-enrolls the still-running resource into a paid Extended Support tier.
  3. Nothing breaks. No alarms fire. The workload keeps running exactly as before — just at a materially higher hourly rate, sometimes double, billed automatically and continuously until you upgrade.

GreenOps Scan now proactively detects this across six AWS services, tells you exactly how many days you have left, and estimates the monthly surcharge in dollars — before it shows up as a mystery line item.

What's covered

ServiceWhat triggers a findingExtended Support cost model
LambdaRuntimes past end of security-patch support (e.g. Node.js 16.x, 18.x)No direct AWS surcharge, but the function silently stops receiving security patches
RDS / AuroraMySQL, PostgreSQL, Aurora MySQL, Aurora PostgreSQL versions past standard supportFlat per-vCPU-hour rate, billed continuously
DocumentDBEngine versions past standard support (e.g. 3.6)Same per-vCPU-hour billing model as RDS
EKSKubernetes versions past standard supportFlat $0.60/cluster-hour during Extended Support, vs. $0.10/hour standard
ElastiCache (Redis OSS)Redis 4, 5, and 6 past their standard support end dates50–100% surcharge on top of regular node pricing
OpenSearch / ElasticsearchLegacy domain versions past standard supportUp to 100% surcharge — effectively doubling instance cost

Six services, one consistent idea: an old version isn't just a security or compatibility risk anymore — for most of these it's a recurring bill that keeps growing the longer you wait.

Why this is easy to miss

Extended Support billing doesn't show up as a separate, clearly labeled line item that jumps out at you. It's baked into the existing per-hour charge for the resource, so a database that always cost roughly the same amount can quietly start costing 50–100% more without a corresponding change in usage, traffic, or instance size. Unless someone is actively cross-referencing every engine version against AWS's published support calendar — for every RDS instance, every EKS cluster, every ElastiCache node, every OpenSearch domain, across every region — this is the kind of cost creep that survives multiple billing cycles before anyone notices.

Here's a real AWS Cost and Usage graph from an account that didn't catch it in time:

AWS Cost Explorer graph showing monthly cost holding steady around $300–450 from March through July 2026, then jumping to over $1,500 in August 2026, with a new "EUC1-ExtendedSupport:Yr1-Yr2:MySQL8.0" line item making up more than half of that month's total cost

One new line item — ExtendedSupport:Yr1-Yr2:MySQL8.0 — appeared and immediately became the single largest cost driver on the account that month, more than tripling the total bill on its own. Nothing else changed: same instance sizes, same usage pattern, same everything except the MySQL 8.0 engine crossing into its Extended Support window. This is exactly the kind of jump greenops-scan is built to catch weeks in advance, while the finding is still deprecating-soon and there's no surcharge yet.

How the scanner finds it

GreenOps Scan ships a shared, date-aware deprecation registry built from AWS's own published support schedules. Every relevant scanner module — Lambda, RDS, EKS, ElastiCache, and now OpenSearch — checks each resource's engine or runtime version against that registry during a normal scan. No extra permissions, no separate command: it runs as part of the same read-only scan you already do.

Findings are split into two severities so you have room to plan rather than scramble:

  • deprecating-soon (medium severity) — standard support ends within the next 180 days (90 for EKS). No surcharge yet, but the clock is running.
  • deprecated (critical severity) — standard support has already ended. The estimated monthly surcharge is included in the finding.

Here's what that looks like in the scanner's output (now rendered as a readable, copy-paste-friendly YAML-like list rather than a wide ASCII table):

  - severity: CRITICAL
    module: OPENSEARCH
    resource: legacy-search-domain
    resourceType: OpenSearch Domain
    issue: Elasticsearch 7.1 is past standard support (ended 2025-11-07) — Extended Support surcharge now applies
    costSavings: $657.00/mo
    confidence: MED
    co2Savings: 0.00 kg/mo
    recommendation: Upgrade the domain's engine version to eliminate the ongoing Extended Support surcharge

  - severity: MEDIUM
    module: RDS
    resource: prod-orders-db
    resourceType: RDS Instance
    issue: mysql 8.0.35 reaches end of standard support on 2026-07-31
    costSavings: $0.00/mo
    confidence: MED
    co2Savings: 0.00 kg/mo
    recommendation: Plan an upgrade before standard support ends to avoid the Extended Support surcharge

Notice the second finding: zero savings today, but a clear warning with a date. That's the point — catching this before the surcharge starts is strictly better than catching it after.

Why "migrate" is the right framing, not just "cut a cost"

Most GreenOps findings are pure cost optimization: right-size this, delete that, turn this off overnight. Deprecated-version findings are different — they're really a migration backlog, and treating them that way changes how you should prioritize:

  • They compound. Extended Support windows have their own expiration dates. Miss the window and AWS force-upgrades or further restricts the resource — you lose the option to choose your own migration timing.
  • They're not a one-time fix. Unlike an idle instance you can delete once, a version upgrade requires actual engineering work: testing, compatibility checks, a maintenance window.
  • The dollar figure is a forcing function, not the goal. The real win isn't the surcharge avoidance — it's staying on a supported, patched, current version. The cost estimate just makes it easier to get the work prioritized against everything else on the backlog.

What to do when you see one of these findings

  1. Deprecating-soon findings: file a ticket now, while there's no financial pressure and the whole team can plan a calm upgrade instead of a fire drill.
  2. Deprecated findings: check the estimated monthly surcharge against the cost of the upgrade work — for most workloads, the upgrade pays for itself within the first billing cycle.
  3. For clusters/domains you can't upgrade immediately: at minimum, get the upgrade scheduled with a target date, since the surcharge accrues every hour the resource stays on the old version.

Try it

If you already run greenops-scan, the deprecation checks run automatically — no new permissions, no new flags:

npx greenops-scan

If a resource in your account is currently in (or approaching) Extended Support, you'll see it flagged with the exact standard-support end date and an estimated monthly cost. If nothing shows up, that's a genuinely good sign — it means your Lambda runtimes, databases, clusters, caches, and search domains are all on currently-supported versions.

Tags: #AWS #CloudCostOptimization #FinOps #ExtendedSupport #RDS #EKS #Lambda #ElastiCache #OpenSearch #GreenOps

More posts

View all posts →

Every Finding Now Tells You Which Team, Project, and Stack Owns It

GreenOps Scan now attaches each flagged resource's AWS tags — Project, Environment, Team, even the exact CloudFormation stack and logical ID — straight into every finding, no new IAM permissions required.

Stop Pasting AWS CLI Commands Into Prod — Let Your Agent Fix the Code Instead

GreenOps Scan's new --llm-prompts flag turns every finding into a copy/paste prompt for Copilot, Claude, or Cursor to fix in your actual Terraform/CDK/CloudFormation source — no more IaC drift from hand-run remediation commands.

How to Right-Size EC2 Instances Before You Migrate to Graviton

A practical guide to collecting CPU, memory, and network baselines, matching the right instance family, and avoiding the common mistakes that kill Graviton migrations.