Start with visibility
Cost Explorer gives a first view, but you need to go further: detailed exports (Cost and Usage Report or Data Exports), activated cost allocation tags, accounts organized in AWS Organizations, and a dashboard that ties every cost to an application and its owner through the CMDB.
Rate optimization: pay less for the same consumption
| Lever | For | Good to know |
|---|---|---|
| Compute Savings Plans | EC2, Fargate, Lambda | The most flexible: family, region and OS can change |
| EC2 Instance Savings Plans | One instance family in one region | Bigger discount, less flexibility |
| Reserved Instances | RDS, ElastiCache, OpenSearch, Redshift… | Essential for managed databases |
| Overall commitment | All consumption | Discount negotiated with AWS on a multi-year volume |
As on Azure, we clean up before we commit: rightsizing and Stop/Start first, then a commitment on the baseline. See our Reserved Instances and savings plans page.
Usage optimization: consume only what is useful
- Rightsizing: AWS Compute Optimizer gives leads, which we cross-check with our own rules (CPU and RAM P95 over 30 days) and each application's context.
- Automatic Stop and Start on demand: for non-prod environments, an automatic evening shutdown with restart on demand delivers far more than a fixed schedule. For WorkSpaces, AutoStop mode follows the same logic.
- EBS: move gp2 volumes to gp3 (about 20% cheaper per GB), delete unattached volumes and old snapshots.
- Public IPs: since 2024, every public IPv4 address is billed. The ones no longer in use cost money for nothing.
- Graviton: ARM instances often offer better price-performance, to be validated application by application.
- S3: storage classes matched to data age (Standard-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval, Deep Archive) with lifecycle policies, or Intelligent-Tiering when usage is unpredictable.
The costs that drift silently
- CloudWatch Logs: filter what is collected, set a retention per log group (the default is often "never expire"), use the Infrequent Access log class for rarely queried logs.
- NAT Gateway and data transfer: NAT Gateway data processing and transfers between availability zones or to the Internet often weigh more than expected. VPC endpoints and the right architecture cut these costs sharply.
- Application loops: a Lambda function triggered by its own output can blow up the bill within hours. Monitoring and alerting catch it the same day.
Azure, AWS or both
Azure and AWS are our core platforms, and we have already transposed our approach from Azure to AWS. In a multi-cloud estate, we consolidate both bills in the same dashboard, with the same governance rules.