Author: Nick Welch - CloudHealth Sr. Technical Account Manager
AWS Extended Support charges are easy to overlook. They tend to appear as relatively small line items on a cloud bill, but they’re often a signal of something larger: workloads still running on outdated instance generations that are more expensive, less efficient, and no longer fully supported.
Another Community article, Proactive AWS Cost Management: Visualizing Extended Support Charges, already provides guidance on identifying where Extended Support charges are occurring. That visibility is a critical first step. However, for FinOps practitioners, detection alone isn’t enough. To eliminate these charges at-scale, teams need a clear, ongoing inventory of which legacy instance generations are still in use and how much they cost across the environment.
This article will show you how to create a FlexReport that lists outdated AWS instance generations and their associated costs. The resulting report can be reused over time to prioritize upgrades, track modernization progress, and validate savings as legacy infrastructure is retired.
Extended Support charges are not arbitrary fees — they are a direct consequence of running workloads on older instance families that AWS has superseded with newer, more cost‑effective options.
From a FinOps perspective, this creates three distinct challenges:
Visibility gaps Individual Extended Support charges don’t always reveal which specific instances need to be upgraded.
Prioritization difficulty Without aggregated cost data, it’s hard to determine which upgrades will deliver the greatest financial impact.
Lack of measurable outcomes Teams often remove Extended Support charges but don’t track the broader savings from improved price‑performance.
By maintaining a report that inventories all outdated instance generations and their spend, FinOps teams gain a durable mechanism for managing this class of technical debt.
Existing CloudHealth reporting answers an important question:
"Where am I being charged for AWS Extended Support?"
This article focuses on the next, operationally critical question:
"Which legacy instance generations are driving those charges, and what is their total cost of ownership?"
The goal is not just to remove the Extended Support fee, but to:
Reduce the underlying instance cost
Improve application performance
Prevent future support charges from re‑emerging
To support this workflow, we’ll create a FlexReport that:
Identifies AWS EC2 instances running on outdated generations
Aggregates cost by instance family, account, region, or environment
Can be reused over time to track progress and validate savings
This report becomes a standing FinOps artifact - not a one‑time cleanup tool.
To do this follow these simple steps:
Navigate to the Reports section in our New Experience
Click on the New Report icon and choose to create it via the UI or SQL
For the Dataset selector, choose the AWS Cost & Usage Report and click NEXT
Now click on the SQL Query tab and delete the existing query.
Now cut and paste the Custom Query below into the Query Editor.
Click on Preview Report to see the result and select the chart you would like to display for the report.
Once satisfied, click on NEXT
Give the FlexReport a name, description, and ensure it is Public so others can access the report and click CREATE.
That’s it! Super easy!
SELECT timeInterval_Month AS Month, lineItem_UsageAccountId AS Account_ID, \"organization##accountname\" AS Account_Name, SUM(lineItem_NetUnblendedCost) AS Net_Unblended_Cost, SUM(reservation_NetEffectiveCost) AS Reservation_Net_Effective_Cost, SUM(savingsPlan_NetSavingsPlanEffectiveCost) AS SavingsPlan_Net_Effective_Cost, ROUND( SUM( COALESCE(lineItem_NetUnblendedCost, 0) + COALESCE(reservation_NetEffectiveCost, 0) + COALESCE(savingsPlan_NetSavingsPlanEffectiveCost, 0) ), 2 ) AS Total_Effective_Cost, product_instanceTypeFamily AS Instance_Type_Family, CASE WHEN product_currentGeneration = 'No' OR product_instanceTypeFamily IN ( 'c4', 'd3', 'i3', 'i3en', 'm4', 'p4', 'p4d', 'p4de', 'r4', 'r5', 'r5a', 'r5ad', 'r5b', 'r5d', 'r5dn', 'r6a', 't2', 't3', 't3a', 'z1d' ) THEN 'Old' ELSE 'Current' END AS Instance_Generation, COUNT(DISTINCT lineItem_ResourceId) AS Instance_Count FROM AWS_CUR WHERE (product_instanceTypeFamily IS NOT NULL) AND (lineItem_ProductCode IN ('AmazonEC2')) GROUP BY timeInterval_Month, lineItem_UsageAccountId, \"organization##accountname\", product_currentGeneration, product_instanceTypeFamily
Recommended Report Dimensions & Metrics
Suggested Dimensions:
Region
Environment or Tag (e.g., Prod / Non‑Prod, Application)
Perspectives (e.g., Business Unit, Cost Center, Application Team)
These views allow teams to quickly answer:
Where is legacy infrastructure concentrated?
Which upgrades will yield the highest savings?
Are upgrades progressing over time?
Making this a Continuous FinOps Control
Extended Support charges will reappear if aging infrastructure isn’t proactively managed. By keeping this FlexReport as a standing control, FinOps teams can:
Detect legacy instances before they become cost drivers
Support modernization initiatives with clear financial data
Reinforce continuous optimization rather than reactive cleanup
Over time, this approach helps organizations reduce waste, improve performance, and maintain tighter alignment between engineering decisions and financial outcomes.
Summary
Identifying AWS Extended Support charges is an important starting point - but lasting savings require deeper visibility into the legacy infrastructure behind them.
By combining existing Extended Support reporting with a FlexReport that inventories outdated instance generations and their associated cost, FinOps practitioners can move from detection to action. The result is not just fewer support charges, but a more efficient, modern, and cost‑effective AWS environment.