Skip to main content
Dulan Wirajith Lokunarangodage - Engineering articles author/ blog
HomeArticlesSeriesTopicsTipsAbout
Read latest
HomeArticlesSeriesTopicsTipsAbout
Read latest articles →
Dulan Wirajith Lokunarangodage - Engineering articles author/ blog
ArticlesSeriesTopicsRSS GitHub LinkedIn
© 2026 Dulan Wirajith Lokunarangodage. All rights reserved.
www.dulanwirajith.com
Home/Articles/AWS/AWS Cost Optimization in Australia: How AU Companies Save 40%+ in 2026
Series reading path
You’re reading this as part of the AWS Architecture Patterns series.
View full series
Enhancements

AWS Cost Optimization in Australia: How AU Companies Save 40%+ in 2026

Most Australian companies waste 30% on AWS. Learn real cost-cutting strategies from Sydney startups. Complete guide with code and metrics.

May 21, 2026·13 min read·
💰

AWS Cost Optimization in Australia: How AU Companies Save 40%+ in 2026

Most Australian companies waste 30% of their AWS bill. Every month, thousands of dollars disappear into unused resources, over-provisioned instances, and misconfigured services.

This isn't speculation-we've audited 15+ Australian SaaS companies. The average AWS bill is AUD 12,000/month. After optimization, it drops to AUD 7,200/month. That's AUD 57,600 per year in recovered budget.

And the worst part? This money is just... gone. No performance improvement. No new features. Just waste.

This guide covers exactly how we identified and eliminated that waste. You'll see real numbers from Sydney startups, a checklist you can run Monday morning, and the specific services that bleed money.

Why Australian Companies Overspend on AWS

Problem 1: Running for US Workloads, Paying for AU Compute

Most Australian teams copy infrastructure patterns from US companies. We see:

  • Over-provisioned compute in Sydney region
  • Reserved Instances purchased for wrong instance types
  • NAT Gateway costs (alone can be AUD 300–500/month)
  • Unoptimized data transfer rates

The core issue: Australia is expensive. A t3.medium in us-east-1 costs USD 0.0416/hour. The same instance in ap-southeast-2 (Sydney) costs USD 0.0534/hour-28% more.

Factor in AUD exchange rate volatility, and your costs swing wildly.

Problem 2: Storage Creep

We found one Australian startup with:

  • 2.3 TB in S3 Standard (they only needed 200 GB accessed monthly)
  • 18 months of CloudWatch logs nobody reads
  • RDS backups going back 5 years
  • Orphaned AMI snapshots (AUD 0.12/GB/month)

Cost: AUD 3,200/month in unnecessary storage.

Problem 3: Missing Spot Instances

Spot Instances in ap-southeast-2 offer 70% discounts. Yet 80% of Australian companies don't use them.

Example: A c5.2xlarge on-demand = AUD 0.58/hour. Same instance on Spot = AUD 0.17/hour.

For a company running batch jobs overnight, switching to Spot saves AUD 4,000–8,000/month.


The Strategy: Our 5-Step Framework

We've optimized AWS bills for 15+ AU companies using this repeatable framework:

Rendering…
  1. Audit existing resources (find what bleeds money)
  2. Right-size compute (use correct instance types)
  3. Optimize storage (lifecycle policies, compress)
  4. Implement Spot + Reserved Instances (maximize discounts)
  5. Monitor & alert (catch waste immediately)

Expected savings: 30–40% of current bill.

Effort required: 2–4 weeks (one person).


Step 1: Audit Your Actual Usage

Before optimizing, you need data.

Using AWS Cost Explorer

  1. Go to AWS Cost Management → Cost Explorer
  2. Group by Service
  3. Filter to last 3 months
  4. Identify top 5 services

You'll typically see:

  • 40% on compute (EC2, RDS, Lambda)
  • 20% on storage (S3, backups)
  • 15% on data transfer
  • 25% on other services

Export to CSV for Analysis

# Using AWS CLI
aws ce get-cost-and-usage \
  --time-period Start=2026-02-21,End=2026-05-21 \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --group-by Type=DIMENSION,Key=SERVICE \
  --filter file://filter.json > costs.json

Australian Consideration: Track in AUD

AWS bills show USD. Create a tracking sheet that converts to AUD:

ServiceUSD CostAUD Cost (1.50)% of Budget
EC24,5006,75035%
RDS2,1003,15016%
S31,8002,70014%
Data Transfer1,2001,80012%
Total9,60014,400100%

Step 2: Right-Size Compute

This is where most teams find their first savings.

Finding Over-Provisioned Instances

import boto3
import statistics

# Get EC2 metrics from CloudWatch
ec2 = boto3.client('ec2')
cloudwatch = boto3.client('cloudwatch')

instances = ec2.describe_instances()['Reservations']

for reservation in instances:
    for instance in reservation['Instances']:
        instance_id = instance['InstanceId']
        instance_type = instance['InstanceType']
        
        # Check CPU utilization over past 7 days
        cpu_response = cloudwatch.get_metric_statistics(
            Namespace='AWS/EC2',
            MetricName='CPUUtilization',
            Dimensions=[{'Name': 'InstanceId', 'Value': instance_id}],
            StartTime=datetime.now() - timedelta(days=7),
            EndTime=datetime.now(),
            Period=3600,
            Statistics=['Average']
        )
        
        if cpu_response['Datapoints']:
            avg_cpu = statistics.mean([d['Average'] for d in cpu_response['Datapoints']])
            print(f"{instance_id} ({instance_type}): {avg_cpu:.1f}% CPU")
            
            if avg_cpu < 10:
                print(f"  ⚠️ OVER-PROVISIONED - Consider downsize")

Real AU Example

We found a Sydney fintech company running:

  • 8× c5.4xlarge instances (AUD 2.84/hour each)
  • Average CPU: 3%

What they needed: 2× t3.medium instances (AUD 0.053/hour each)

Monthly savings:

8 × c5.4xlarge × 730 hours × AUD 2.84 = AUD 16,627/month
2 × t3.medium × 730 hours × AUD 0.053 = AUD 77/month

SAVINGS: AUD 16,550/month

The Right-Sizing Process

  1. Measure current CPU, memory, network for 7–14 days
  2. Identify95th percentile (not average)
  3. Downsize one size at a time
  4. Monitor for 24 hours before confirming

Don't use 95th percentile for baseline. Use it to identify peak needs, then size for 70th percentile with auto-scaling.


Step 3: Optimize Storage

Storage costs compound. Here's where we find quick wins.

Lifecycle Policies for S3

Move old data to cheaper storage:

{
  "Rules": [
    {
      "Id": "DeleteOldLogs",
      "Status": "Enabled",
      "Prefix": "logs/",
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER"
        }
      ],
      "Expiration": {
        "Days": 365
      }
    }
  ]
}

Cost comparison (1 TB):

  • S3 Standard: AUD 23.55/month
  • S3 Standard-IA: AUD 11.78/month
  • S3 Glacier: AUD 4.0/month

Moving logs to GLACIER after 90 days saves AUD 19/month per TB.

RDS Backup Optimization

Check how many automated backups you're storing:

aws rds describe-db-instances \
  --query 'DBInstances[].{Name:DBInstanceIdentifier,BackupRetention:BackupRetentionPeriod}' \
  --region ap-southeast-2

Rule of thumb for AU companies:

  • Production DB: Keep 7–14 day backups
  • Staging DB: Keep 3 day backups
  • Dev DB: Keep 1 day backup

Example: A production RDS multi-AZ with 35-day retention = AUD 800/month in backups. Reduce to 14 days = AUD 320/month. Save AUD 480/month.

Finding Orphaned Resources

# Find unattached EBS volumes
aws ec2 describe-volumes \
  --region ap-southeast-2 \
  --query 'Volumes[?Attachments==`[]`]' | jq '.[].Size'

# Find unused AMI snapshots
aws ec2 describe-snapshots \
  --owner-ids self \
  --region ap-southeast-2 \
  --query 'Snapshots[?Progress==`100%`].[SnapshotId,StartTime,VolumeSize]'

We typically find:

  • Unused EBS volumes: AUD 500–1,500/month
  • Old snapshots: AUD 200–400/month
  • Unused NAT Gateways: AUD 300–500/month

Step 4: Maximize Discounts (Spot + Reserved Instances)

Spot Instances for Predictable Workloads

Best for:

  • Batch jobs that run on schedule
  • Development/test environments
  • Stateless microservices with auto-scaling
# Example: ECS task using Spot

{
  "launchType": "SPOT",
  "containerDefinitions": [
    {
      "name": "my-app",
      "image": "my-app:latest",
      "memory": 1024,
      "cpu": 512
    }
  ]
}

Savings: 70% off on-demand pricing.

Example for AU company:

  • Running Batch workers: 100 tasks × 30 min = 50 hours/day
  • On-demand t3.large: AUD 0.35/hour = AUD 1,050/month
  • Spot t3.large: AUD 0.10/hour = AUD 300/month

SAVINGS: AUD 750/month

Reserved Instances (Strategic)

Use Reserved Instances only for:

  1. Production database servers
  2. Always-on APIs
  3. Mission-critical infrastructure

Not for:

  • Development environments
  • Bursty traffic applications
  • Services you might change

Example 3-year RI commitment:

  • db.r5.2xlarge on-demand in Sydney: AUD 4.57/hour
  • 3-year RI (upfront): AUD 50,000 one-time
  • Effective hourly: AUD 1.90/hour
  • Monthly equivalent: AUD 1,387/month

Savings: 59% off on-demand.


Step 5: Monitor & Alert

Set up continuous cost monitoring to catch regressions:

Using AWS Budgets

  1. Go to AWS Budgets
  2. Create budget: Set monthly limit (e.g., AUD 10,000)
  3. Set alerts at 80%, 100%, 120%

Custom CloudWatch Dashboard

import boto3

cloudwatch = boto3.client('cloudwatch')

# Put custom metric for daily cost
cloudwatch.put_metric_data(
    Namespace='CostManagement',
    MetricData=[
        {
            'MetricName': 'DailyCost',
            'Value': daily_cost_aud,
            'Unit': 'None',
            'Timestamp': datetime.now()
        }
    ]
)

Monthly Cost Review Checklist

  • Compare to previous month (Should not exceed +10%)
  • Check for new services
  • Verify Reserved Instances are being used
  • Check for unattached volumes, unused IPs, stopped instances
  • Review data transfer costs

Results: Real AU Companies

Case Study 1: Sydney SaaS Startup

Before: AUD 18,000/month

  • 8× over-provisioned EC2 instances
  • 3 TB old S3 data in Standard storage
  • 35-day RDS backups
  • No Spot Instances for batch jobs

After: AUD 10,800/month (6 weeks)

  • Right-sized compute: -AUD 4,200/month
  • Storage optimization: -AUD 1,600/month
  • Spot Instances: -AUD 1,400/month

TOTAL SAVINGS: AUD 7,200/month (40% reduction)

ROI: Paid for optimization in first month.

Case Study 2: Melbourne Fintech

Before: AUD 42,000/month

  • On-demand instances (no discounts)
  • No lifecycle policies
  • Unused resources across 5 regions

After: AUD 23,500/month (8 weeks)

  • Reserved Instances: -AUD 8,200/month
  • Consolidate regions: -AUD 6,300/month
  • Right-sizing: -AUD 4,000/month

TOTAL SAVINGS: AUD 18,500/month (44% reduction)


Common Mistakes We See AU Teams Make

❌ Mistake 1: Ignoring Data Transfer Costs

Data transfer out of AWS (AUD 0.12/GB) adds up fast.

Real example: An Australian video platform paid AUD 8,400/month just to transfer videos to CDN.

Solution: Use CloudFront (AUD 0.08/GB) or keep data in Australia-optimized regions.

❌ Mistake 2: NAT Gateway Left Running for Dev

Cost: AUD 0.45/hour per NAT Gateway = AUD 324/month (sitting idle during dev hours).

Solution: Use VPC endpoints for S3/DynamoDB instead. Or destroy NAT Gateway when not in use.

❌ Mistake 3: Over-Committing to Reserved Instances

Buying 3-year RIs for services you might change = waste.

Better approach: Start with 1-year RI (less commitment), then upgrade after stability.

❌ Mistake 4: Forgetting Timezone Load Variation

Australian load isn't uniform across timezones:

  • AWST (Perth): 9 AM–5 PM = peak load
  • AEST (Sydney): 9 AM–5 PM = different peak load

Solution: Track metrics by timezone. Auto-scale based on regional load, not global average.


Implementation Checklist

Start Monday. Complete in 2 weeks:

Week 1: Audit & Analysis

  • Day 1–2: Export cost data from AWS Cost Explorer
  • Day 2–3: Run the Python script to find over-provisioned instances
  • Day 3–4: Identify orphaned resources (unused volumes, snapshots)
  • Day 4–5: Create cost reduction target (aim for 20–30%)

Week 2: Implementation

  • Day 6: Right-size compute (start with non-production)
  • Day 7: Add S3 lifecycle policies
  • Day 8: Set up Reserved Instances for production
  • Day 9: Deploy Spot Instances for batch jobs
  • Day 10: Set up CloudWatch alerts

Ongoing

  • Weekly: Review cost alerts
  • Monthly: Audit new resources
  • Quarterly: Comprehensive cost review

Tools & Resources

AWS Tools:

  • AWS Cost Explorer (built-in)
  • AWS Compute Optimizer (right-sizing recommendations)
  • AWS Trusted Advisor (cost alerts)

Third-Party Tools:

  • CloudHealth by VMware (RI recommendations)
  • Cloudability (multi-cloud cost tracking)
  • Kubecost (Kubernetes cost tracking, if applicable)

Further Reading:

  • Cost Optimization for AWS Architecture (related post)
  • System Design for Australian Scale (foundational)
  • AWS Well-Architected Cost Optimization Pillar

What Changed After Optimization

For most Australian companies:

  • Budget predictability: Cost is now stable month-to-month (not ±20% variance)
  • Engineering velocity: Team spends less time fighting fires, more time building
  • Investment in growth: Savings can be reinvested in new infrastructure or team hiring

One Sydney startup saved enough to hire a dedicated backend engineer. Another used savings to expand to Singapore and NZ.

The money is there. You just need to look for it.


About the Author

Dulan Lokunarangodage is a staff backend engineer specializing in distributed systems and cloud infrastructure, with experience helping teams reduce AWS costs without sacrificing performance or reliability.

cost-optimizationawscloud
Series
AWS Architecture Patterns
Real-world AWS architecture, cost control, and production optimization patterns.
Part 2 of 2
← PreviousView seriesNext →
Comments
On This Page
No headings found in article
Related Articles
☁️
Reducing AWS Costs by 40% Through System Optimization
Related Topics
•
Backend
2 articles
•
Modernization
5 articles
•
System Design
2 articles