Skip to content
HexaTransfer
Back to blog
Cloud & Storage

Cloud Storage Cost Optimization: Save Up to 70%

Reduce cloud storage costs with proven optimization strategies. Storage class selection, lifecycle policies, and cost monitoring techniques.

Cutting cloud storage bills by 50-70% comes down to five moves executed in order: move warm data off S3 Standard ($0.023/GB) into S3 Glacier Instant ($0.004/GB) or Backblaze B2 ($0.006/GB), eliminate egress via Cloudflare R2 (zero-egress) for user-facing downloads, lifecycle cold data into Glacier Deep Archive ($0.00099/GB), delete orphaned multipart uploads and incomplete snapshots, and enforce per-team budgets with CloudWatch or Azure Cost Management alerts. A 100 TB workload at $2,300 a month on S3 Standard drops to $690 at Glacier Instant and $99 at Deep Archive — that 70% headline number isn't marketing, it's arithmetic.

Map the Spend Before Cutting It

Optimization without measurement is guessing. Before changing anything, generate a storage inventory:

aws s3api list-buckets --query 'Buckets[].Name' --output text | \
  xargs -I{} aws s3 ls s3://{} --recursive --summarize

Better: run S3 Storage Lens or Azure Cost Management's storage analyzer. You want per-bucket totals for object count, total bytes, average object size, and distribution across storage classes. The 80/20 rule almost always holds — one or two buckets hold 80% of the spend, and they're where optimization pays off.

Tag every bucket with owner, env, project, and lifecycle-policy so cost reports map to people who can actually take action.

Pick the Right Storage Class for Each Access Pattern

Storage classes exist because one flat price can't match every workload. Rough buckets:

  • Hot (daily reads): S3 Standard, Azure Hot, GCS Standard. Premium for low latency.
  • Warm (monthly reads): S3 Standard-IA, Azure Cool, GCS Nearline. 40-60% cheaper.
  • Cold (quarterly reads): S3 Glacier Instant, Azure Archive, GCS Coldline. 80% cheaper than Standard.
  • Archive (annual or never): Glacier Flexible / Deep Archive. 95% cheaper.

Misplacing a file in the wrong class costs twice: either you pay too much on premium classes, or you pay retrieval fees every time you touch a cold file. Glacier Deep Archive charges $0.02 per GB retrieved plus a per-request fee; pulling a 1 TB dataset once costs $20+ beyond the storage savings.

A safe default for new buckets: S3 Intelligent-Tiering, which auto-moves objects between access tiers based on usage. The 2.5 cent per 1,000-object monitoring fee is worth it for workloads with unpredictable patterns.

Lifecycle Policies That Do the Heavy Lifting

A typical lifecycle policy reduces 60% of spend on its own:

{
  "Rules": [{
    "ID": "age-out",
    "Status": "Enabled",
    "Transitions": [
      { "Days": 30,  "StorageClass": "STANDARD_IA" },
      { "Days": 90,  "StorageClass": "GLACIER_IR" },
      { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
    ],
    "Expiration": { "Days": 2555 },
    "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 }
  }]
}

Match the thresholds to actual access decay. For transactional logs, 14 days hot, 30 days warm, 90 days cold works. For media archives, the first transition can be 90+ days. The AbortIncompleteMultipartUpload line is critical — abandoned multipart sessions can silently accumulate hundreds of GB of billable storage that nobody can see.

Killing Egress Costs

Egress is often 30-50% of a cloud storage bill and the easiest single item to attack. Options:

  • Cloudflare R2: zero egress, S3-compatible, $0.015/GB storage. For user-facing CDN-backed downloads, this is the no-brainer choice.
  • Backblaze B2 + Cloudflare Bandwidth Alliance: egress to Cloudflare is free, then CDN handles the user.
  • Wasabi: egress free up to 1x stored volume per month.
  • AWS S3 + CloudFront: CloudFront egress ($0.085/GB) is cheaper than direct S3 egress, and zero between S3 and CloudFront in the same region.

For internal workloads, enable VPC Gateway Endpoints for S3 — these remove NAT Gateway processing fees (which can exceed storage fees if you're not careful). For cross-region replication, be explicit about which regions and minimize traffic to keep cross-region egress below $0.02/GB.

Compression and Deduplication

Before paying for storage, reduce what you store:

  • Text and logs: zstd compression typically hits 8:1 ratios. A 10 TB log pile becomes 1.25 TB stored.
  • Images: re-encode PNG to WebP or AVIF for 60-80% size reduction on user-facing assets.
  • Video: H.265 or AV1 over H.264 for 30-50% smaller files at equivalent quality.
  • Backups: restic and Borg deduplicate across snapshots — a 1 TB working set with daily backups compresses to roughly 1.2 TB total at 30-day retention.

Compression is CPU for bytes. Given storage costs at $0.023/GB/month versus EC2 at ~$0.05/hour, compression almost always pays off within days.

Deleting the Stuff You Forgot About

Long-running accounts accumulate waste that's invisible until audited:

  • Orphaned EBS snapshots: snapshots older than their source volumes, or older than 90 days with no tag
  • Old AMIs: every deploy publishes a new AMI; old ones keep billing until deregistered
  • Versioned buckets without lifecycle: every object version counts toward storage, and versioning is on by default
  • Log retention: CloudWatch Logs default to indefinite retention, which means years of billable logs
  • Abandoned buckets: ex-employee projects, test environments from migrations years ago

A quarterly sweep using AWS Trusted Advisor or aws-nuke in a non-prod account identifies candidates. For production, require a two-week deprecation notice to owners before deletion, and keep a recovery snapshot for 30 days post-deletion.

Reserved Capacity and Savings Plans

AWS and Azure both offer prepaid discounts for predictable storage. AWS S3 Storage Classes don't have reservations, but EBS and EFS do through Compute Savings Plans. Azure offers Reserved Capacity for Blob Storage — commit to 100 TB for a year and save ~17%.

Reservations only pay off if you can confidently predict usage. If you're still optimizing, do that first. Reserved capacity on inefficient storage is just prepaying waste.

Monitoring and Alerting on Spend

A monthly cost review is too late — you need daily signals. Set up:

  • Daily anomaly alerts via AWS Cost Anomaly Detection or Azure Anomaly Detection. Ping Slack when daily spend on any service deviates >20% from the 7-day average.
  • Per-bucket budgets with hard alarms at 80%, 100%, and 120% of projected monthly spend.
  • Egress spike alerts: GET traffic on any single bucket exceeding 2x baseline in an hour is the fingerprint of a leaked URL or scraper.
  • Growth projections: extrapolate storage growth 6 months out and flag buckets that would exceed $10k/month at current trajectory.

Dashboards are good; alerts beat dashboards. Nobody checks the dashboard until the invoice lands.

Governance: Cost as a KPI

Cost optimization that isn't continuous reverts. Three practices that make savings stick:

  • FinOps reviews: monthly 30-minute meetings per team, spotlighting their top 3 cost drivers and one action item.
  • Chargeback or showback: allocate cloud costs back to product lines. The team shipping a new analytics feature feels the S3 PUT fees.
  • PR templates that require cost estimates: new infra in a Terraform PR should include a line estimating monthly delta (Infracost plugs in here).

HexaTransfer keeps costs low by storing only ciphertext (no preview generation, no server-side decryption) on zero-egress object storage. Try it at hexatransfer.com — free, no account, 10 GB max.

Putting It All Together

A realistic 6-month plan for a 100 TB workload: week 1, inventory and tag all buckets; week 2-3, apply lifecycle policies with 30/90/365-day transitions; month 2, migrate user-facing downloads to R2 and kill egress; month 3, compress logs with zstd and re-encode media; month 4, sweep orphaned snapshots, old AMIs, and abandoned buckets; month 5, stand up FinOps reviews and daily cost alerts; month 6, evaluate reserved capacity once spend is stable. A team that completes that plan typically lands in the 50-70% savings zone without any heroic re-architecture — just discipline applied across small, well-scoped moves.

Send large files securely with end-to-end encryption

Transfer files up to 10 GB for free with end-to-end encryption. No account required. Your files are encrypted in your browser before upload — no one else can read them.

Send a file