Cloud storage costs are measured in different units for each storage type: block storage by provisioned size per GB-month, written or not; object storage by stored gigabytes, requests and retrieval; file storage by provisioned or used capacity and, depending on the model, performance. Capacity, performance, requests and transfer are therefore separate lines with prices of their own, and which of them grows depends on the type and the access pattern, not on the volume of data alone.

How it works

Block storage

A disk is provisioned at a fixed size and billed per GB-month for as long as it exists, even when its machine is stopped or it is attached to none. Some types add provisioned IOPS and provisioned throughput.

Amazon EBS bills storage, IOPS and throughput per second with a 60 second minimum. gp3 includes 3,000 IOPS and 125 MB/s, with more billed per IOPS-month and per MB/s-month; gp2, st1 and sc1 include I/O in the price per GB; io2 bills provisioned IOPS in tiers per volume (up to 32,000, up to 64,000, above). Azure bills Premium SSD, Standard SSD and Standard HDD managed disks by fixed size tier per month (P10, E10 and S10 are 128 GiB each), with Standard SSD and Standard HDD adding a charge per 10,000 transactions up to an hourly cap. Premium SSD v2 and Ultra Disk bill capacity, IOPS and throughput separately; Premium SSD v2 includes 3,000 IOPS and 125 MB/s, and Ultra Disk is rounded up to the nearest size offer. On Google Cloud, standard, balanced and SSD Persistent Disk cost per provisioned GiB with I/O included, and extreme Persistent Disk adds a charge per provisioned IOPS; Hyperdisk bills capacity plus provisioned IOPS or throughput, on Hyperdisk Balanced above a baseline of 3,000 IOPS and 140 MBps. Regional disks have SKUs of their own.

Object storage

Object storage bills stored gigabytes per month by storage class and redundancy, requests by type, and retrieval from colder classes. Amazon S3 prices S3 Standard in volume tiers (first 50 TB, next 450 TB, over 500 TB) and requests in groups: PUT, COPY, POST and LIST per 1,000 cost more than GET, SELECT and all others; DELETE is free, and browsing a bucket in the console generates requests too. Azure Blob Storage bills per GB by access tier (hot, cool, cold, archive, plus premium) and redundancy (LRS, ZRS, GRS, RA-GRS, GZRS, RA-GZRS), and operations per 10,000, split into writes, list operations, reads and others; writes to geo-redundant accounts add a transfer charge for replication. Google Cloud Storage bills per GiB-month by class (Standard, Nearline, Coldline, Archive) and location type (region, dual-region, multi-region), plus Class A and Class B operations per 1,000; dual-regions and multi-regions add inter-region replication. The trade between classes is covered in storage classes and lifecycle rules.

File storage

Amazon EFS bills used storage by storage class (EFS Standard, EFS Infrequent Access, EFS Archive) and file system type (Regional or One Zone), plus reads, writes and tiering: with Elastic Throughput you pay for the data transferred, with Provisioned Throughput for the performance booked in advance. Azure Files has three billing models: provisioned v2 (storage, IOPS and throughput provisioned separately, for SSD and HDD, recommended by Microsoft for new shares), provisioned v1 (SSD only, performance follows size) and pay-as-you-go (HDD only, used storage, transactions and transfer in the transaction optimized, hot and cool access tiers). Filestore bills provisioned capacity, not used capacity, by service tier (Basic HDD, Basic SSD, Zonal, Regional, Enterprise, High Scale); custom performance adds a fee per instance and a price per IOPS.

What it means for your cost

Storage typeAWSAzureGoogle CloudBilled for
BlockAmazon EBSManaged DisksPersistent Disk, Hyperdiskprovisioned GB, IOPS and throughput on some types, transactions on Azure Standard disks
ObjectAmazon S3Blob StorageCloud Storagestored GB by class and redundancy, requests by type, retrieval
FileAmazon EFSAzure FilesFilestoreprovisioned or used GB, throughput or IOPS, transactions

In billing data, capacity, operations and transfer appear as separate line items, each with its own usage type, meter or SKU; usage, rates and line items explains how they relate. A report by service therefore cannot tell whether a bucket is expensive because of volume or because of requests; only the split by usage type, meter or SKU shows it. Outbound data transfer is not part of the storage price (data transfer and egress), and snapshots and backups belong to backup and disaster recovery.

Two properties of the mechanism create savings opportunities. Block storage and provisioned file storage cost by size, not by occupancy, and keep billing for as long as they exist; orphaned disks are covered in idle and orphaned resources. And redundancy sets the price per GB: each level from local through zonal to geo-redundant has its own rate, as the example shows.

Where it goes wrong

  • Disks larger than the data. Symptom: block storage cost stays flat although little data sits on the disk. Cause: the provisioned size is billed, on Azure the size tier, not the occupancy.
  • Performance above the baseline forgotten. Symptom: an IOPS or throughput line for gp3, Premium SSD v2 or Hyperdisk keeps running after the load has gone. Cause: provisioned IOPS and throughput cost per month whether used or not.
  • Many small objects. Symptom: a bucket's request lines exceed its storage line. Cause: requests cost per 1,000 or 10,000 regardless of object size, and on S3 PUT, COPY, POST and LIST cost more than GET.
  • Redundancy taken from a template. Symptom: the price per GB is above the expected list price. Cause: GRS, GZRS, a dual-region or a multi-region was adopted unchecked, and each level has its own price per GB.
  • Transactions on standard disks. Symptom: an Azure disk costs more than its size tier. Cause: Standard SSD and Standard HDD add a charge per 10,000 transactions up to an hourly cap.

Example

List prices read on 2026-10-16. Azure in Germany West Central, in EUR (converted by Microsoft from USD): Blob Storage hot tier for the first 50 TB EUR 0.0173 per GB-month with LRS, EUR 0.0198 with ZRS and EUR 0.0345 with GRS; hot tier write operations EUR 0.0476 and read operations EUR 0.0038 per 10,000; Premium SSD P10 EUR 19.08 and Standard SSD E10 EUR 8.45 per month with LRS, the latter plus EUR 0.001760 per 10,000 transactions. Google Cloud in Frankfurt (europe-west3), in USD: Cloud Storage Standard USD 0.023 per GiB-month, and in single-region buckets with a flat namespace, Class A operations USD 0.005 and Class B operations USD 0.0004 per 1,000; balanced Persistent Disk USD 0.12 per GiB-month, regional USD 0.24; Hyperdisk Balanced USD 0.094 per GiB-month plus USD 0.006 per IOPS-month and USD 0.047 per MBps-month above the baseline.

Sources

Read on 2026-10-16. Amazon EBS pricing, Amazon S3 pricing, Amazon EFS pricing, Azure Managed Disks pricing, Azure Blob Storage pricing, Azure Files pricing, Compute Engine disk and image pricing, Cloud Storage pricing, Filestore pricing.