DEV Community

Ace7-coder
Ace7-coder

Posted on

AWS FinOps Field Notes (2026-11-04): Auditing RDS Extended Support Charges with Python

While auditing cloud infrastructure costs this week, recurring configuration gaps continue to quietly inflate monthly cloud bills.

Field Insight: The Hidden Cost Trap

Two PostgreSQL 12 databases left standard support, and the RDS line jumped from about $30 to about $330/month with no new resources added. Extended support charges on older database engine versions catch teams off guard because no utilization dashboard flags the cost drift.

Automated Detection: Auditing Outdated RDS Engine Versions with Boto3

import boto3

def audit_rds_engine_versions(region='us-east-1'):
    rds = boto3.client('rds', region_name=region)
    instances = rds.describe_db_instances().get('DBInstances', [])

    # PostgreSQL <= 12 and MySQL <= 5.7 incur AWS Extended Support charges
    eol_engines = {'postgres': 12.0, 'mysql': 5.7}
    flagged = []

    for db in instances:
        db_id = db['DBInstanceIdentifier']
        engine = db['Engine']
        version_str = db['EngineVersion']
        parts = version_str.split('.')
        major_ver = float(f"{parts[0]}.{parts[1]}") if len(parts) > 1 else float(parts[0])

        for eol_key, max_ver in eol_engines.items():
            if eol_key in engine and major_ver <= max_ver:
                flagged.append({'DBInstance': db_id, 'Engine': engine, 'Version': version_str})
                print(f"[ALERT] {db_id} ({engine} {version_str}) is past standard support! Extended Support fees apply.")

    return flagged

if __name__ == '__main__':
    audit_rds_engine_versions()

Enter fullscreen mode Exit fullscreen mode

Running one-off audit scripts in single regions does not scale across enterprise AWS Organizations. Sustained cloud cost management requires cross-account role assumption (sts:AssumeRole), cost anomaly correlation, and automated scheduled auditing.

Top comments (0)