Cloud TechnologyHorizontal vs Vertical Scaling: How to Choose in 2026Horizontal vs vertical scaling explained for 2026: how scaling up and scaling out work on AWS, Azure and Kubernetes, and when to use each.CodeeoInsightsCloud Technology
AWS Cost Optimization: 7 Steps to Cut Your Cloud Bill in 2026
A practical 2026 guide to AWS cost optimization: tagging, budgets, rightsizing, Savings Plans, S3 storage classes and network charges, with current AWS prices.

AWS cost optimization means paying only for the cloud capacity your workloads actually use, at the lowest rate AWS offers for that usage. In practice that comes down to four habits: tag everything so you can see who spends what, rightsize or switch off idle resources, commit to Savings Plans for steady usage, and move data to cheaper storage classes as it ages. Teams that do all four regularly cut a large part of their bill without touching performance.
This guide covers each step with current AWS prices and tools, as of October 2026. It is about cost only. If you are also hardening your account, treat security as a separate piece of work with its own checklist.
Why AWS bills grow faster than expected
AWS charges on a pay as you go basis. You pay for compute by the second or hour, storage by the GB per month, and data by the GB as it moves. Nothing stops a forgotten test server, an oversized database or a growing log bucket from charging you every month.
The problem is common. In Flexera's 2026 State of the Cloud report, published in March 2026, respondents estimated that 29% of their cloud spend is wasted, the first rise in five years. 85% named managing cloud spend as their top cloud challenge, ahead of security.
The usual culprits are easy to list:
- Instances sized for a peak that never comes
- Development and test environments left running overnight and at weekends
- Unattached EBS volumes, old snapshots and idle load balancers
- Data kept in S3 Standard long after anyone reads it
- Network charges nobody planned for, such as NAT gateway processing and public IPv4 addresses
- On-Demand pricing for workloads that have run at the same level for a year
Step 1: Make costs visible with cost allocation tags
You cannot cut what you cannot attribute. Cost allocation tags are key and value pairs, such as project=checkout or env=production, that you attach to resources and then use to group your bill.
Tags do not show up in billing on their own. You must activate each tag key in the Billing and Cost Management console. According to the AWS Billing documentation, it can take up to 24 hours for a new tag key to appear for activation, and up to another 24 hours to activate. Plan tagging before a big launch, not after.
A tagging policy that works for most companies uses four keys:
| Tag key | Example value | What it answers |
|---|---|---|
| env | production, staging, dev | Is this spend serving customers? |
| project | checkout, mobile-api | Which product does it belong to? |
| owner | team or person | Who decides if it can be deleted? |
| cost-center | marketing, engineering | Which budget pays for it? |
Enforce the policy with AWS Organizations tag policies or in your infrastructure as code templates, so untagged resources are caught at creation rather than in a quarterly cleanup.
Step 2: Watch spend with AWS cost management tools
AWS gives you several built-in tools. Use them together rather than picking one.
AWS Cost Explorer
Cost Explorer charts your spend by service, account, region and tag. AWS says it can forecast up to 18 months ahead at monthly granularity. Using the console has no listed charge, while the Cost Explorer API costs $0.01 per request, which matters if a dashboard polls it constantly.
AWS Budgets
Budgets alert you by email or Amazon SNS when actual or forecast spend crosses a threshold. Set one budget per account or project, with alerts at around 80% and 100% of the monthly figure, so overruns are caught within days rather than at invoice time.
AWS Cost Anomaly Detection
Cost Anomaly Detection uses a machine learning model that accounts for trends and seasonality to flag unusual spend. You set a dollar threshold for alerts, and it starts working within 24 hours of setup. It is the fastest way to catch a runaway job or a misconfigured service.
Cost Optimization Hub and Compute Optimizer
Cost Optimization Hub collects savings recommendations from across your accounts in one place. AWS says it consolidates 18 types of recommendations, including rightsizing, idle resources and commitment purchases. AWS Compute Optimizer analyses utilisation metrics and suggests better sized EC2 instances, EBS volumes, Lambda memory settings and more. AWS Trusted Advisor adds checks for idle and underused resources.
Step 3: Rightsize and switch off what you do not need
Rightsizing means matching instance type and size to the load a workload really has. Start with the recommendations from Compute Optimizer, then check them against a few weeks of CloudWatch metrics before you change anything in production.
Four changes usually pay off first:
- Schedule non-production. A dev or staging environment used only in working hours does not need to run 168 hours a week. AWS Instance Scheduler or a simple scheduled Lambda can stop it out of hours.
- Use Auto Scaling. Let EC2 Auto Scaling groups and container services add capacity when traffic rises and remove it when traffic falls, instead of sizing for the peak all day.
- Move to Graviton. AWS states that Graviton based instances cost up to 20% less than comparable x86 based EC2 instances and use up to 60% less energy for the same performance. Most Linux, container and managed database workloads can switch with little or no code change, but test first.
- Move EBS volumes from gp2 to gp3. AWS lists gp3 at up to 20% lower price per GB than gp2, with a baseline of 3,000 IOPS and 125 MB/s at any size. The change can be made on a live volume.
Then clean up the leftovers: unattached EBS volumes, snapshots of servers that no longer exist, unused Elastic IP addresses and idle load balancers. None of these show up in an application, but all of them appear on the bill.
Step 4: Pay less per hour with Savings Plans and Spot
Once your baseline is rightsized, stop paying On-Demand rates for the part of it that never changes.
| Option | Maximum discount vs On-Demand | Commitment | Best for |
|---|---|---|---|
| Compute Savings Plans | Up to 66% | 1 or 3 years, dollars per hour | Steady compute on EC2, Fargate and Lambda |
| EC2 Instance Savings Plans | Up to 72% | 1 or 3 years, one instance family in one region | Stable fleets that will not change family |
| Database Savings Plans | Up to 35% | 1 year | Aurora, RDS, DynamoDB, ElastiCache, OpenSearch |
| Reserved Instances | Up to 72% | 1 or 3 years, specific instance type | Very stable workloads on one instance type |
| Spot Instances | Up to 90% | None, but AWS can reclaim capacity | Batch, CI, stateless and fault tolerant work |
Figures come from AWS's Savings Plans pricing page, the Savings Plans FAQ and the EC2 Spot page. The real discount depends on instance, region, term and payment option.
AWS now encourages customers to choose Savings Plans as their Reserved Instances expire, because they give similar savings with more flexibility. Compute Savings Plans follow your usage across instance families, regions, operating systems, Fargate and Lambda, so a later move to Graviton or containers does not strand the commitment.
A safe way to buy:
- Rightsize first, so you do not commit to waste.
- Cover the lowest steady level of hourly spend over the last few months, not the average.
- Start with 1 year, No Upfront, and add more in small slices each quarter as usage settles.
- Run interruptible jobs on Spot instead of covering them with commitments.
Step 5: Cut storage costs with S3 storage classes and lifecycle rules
Storage grows quietly. Most data is read often for a few weeks, then rarely, then almost never. S3 has a storage class for each stage, and the price gap between them is large.
Source: Amazon S3 pricing
Two rules keep the savings real. First, the cheaper classes have minimum storage periods. S3 pricing lists 30 days for Standard-IA and One Zone-IA, 90 days for Glacier Instant Retrieval and Glacier Flexible Retrieval, and 180 days for Glacier Deep Archive. Delete or move an object early and you still pay for the remaining days. Second, the archive classes charge to retrieve data, so they suit backups and records you are keeping for compliance, not files your app reads.
How to apply this:
- Unknown or changing access: use S3 Intelligent-Tiering. It moves objects between access tiers automatically for a small monthly monitoring fee per object, with no retrieval charges.
- Predictable ageing: write S3 Lifecycle rules, for example Standard for 30 days, Standard-IA until 90 days, then Glacier Flexible Retrieval or Deep Archive.
- Old versions and uploads: expire noncurrent object versions and abort incomplete multipart uploads. Both are common hidden costs in versioned buckets.
- Logs: set a retention period on CloudWatch Logs groups instead of keeping everything forever.
Step 6: Control data transfer and network charges
Network costs are the line item most teams do not plan for. Three are worth checking:
- Public IPv4 addresses. AWS charges $0.005 per hour for every public IPv4 address, whether in use or idle. Across dozens of instances and load balancers that adds up. Remove addresses you do not need and use IPv6 where your setup allows.
- NAT gateways. AWS's own pricing example shows $0.045 per gateway hour plus $0.045 per GB processed in US East (Ohio). Traffic from private subnets to S3 or DynamoDB can go through free gateway VPC endpoints instead.
- Data leaving AWS. Serve static files and media through Amazon CloudFront, and keep chatty services in the same Availability Zone and region where your resilience needs allow.
Step 7: Make cost a team habit, not a project
Cost work fades unless someone owns it. The teams that keep their bill under control tend to share a few habits:
- A monthly review of Cost Explorer by account and tag, with each owner explaining their top changes.
- Budgets and anomaly alerts routed to the team that owns the spend, not only to finance.
- Separate AWS accounts for production, staging and development under AWS Organizations, so each one has a clear bill.
- Cost checked during design reviews, for example by asking whether a workload can run on Graviton, Spot or a serverless service before it is built.
- Commitment coverage and utilisation reviewed each quarter, so Savings Plans grow with the business.
An AWS cost optimization checklist
| Area | Action | How often |
|---|---|---|
| Visibility | Tag policy enforced, tag keys activated | Once, then on every new service |
| Alerts | Budgets and Cost Anomaly Detection set up | Once, then review thresholds quarterly |
| Compute | Act on Compute Optimizer and Cost Optimization Hub | Monthly |
| Non-production | Stop environments outside working hours | Automated |
| Commitments | Check Savings Plans coverage and utilisation | Quarterly |
| Storage | Lifecycle rules, Intelligent-Tiering, log retention | On every new bucket or log group |
| Cleanup | Delete unattached volumes, old snapshots, idle IPs | Monthly |
| Network | Review NAT, IPv4 and data transfer lines | Monthly |
How Codeeo can help
Codeeo builds and runs web platforms, apps and custom software for companies, and is trusted by 200+ companies. A lot of cloud cost is decided in the code and architecture, so we look at both: caching, background jobs, storage design and how the app scales. If you need engineers to rework an AWS hosted product, our custom software development team can take on the project, or you can add capacity through dedicated developers. To talk through your setup, contact us.
Frequently asked questions
Delete or stop what nobody uses: idle instances, unattached EBS volumes, old snapshots and unused public IP addresses.
Then schedule development environments to stop out of hours. These steps need no commitment and usually show up on the next bill.
Tell us what the business needs. We will tell you what to build first.
Schedule a free consultation and get a written recommendation, with costs, before you commit to anything.
Get in touchPROVEN RESULTS

