Cloud Storage Options Comparison Cheat Sheet
Compares object, block, and file storage across AWS, Azure, and GCP, with guidance on when to use each storage class or type.
Storage Types
The three fundamental categories of cloud storage.
- Object Storage- Flat namespace of key/value blobs with HTTP access; e.g. S3, Azure Blob, GCS. Best for unstructured data
- Block Storage- Raw storage volumes attached to a VM; e.g. EBS, Azure Managed Disks. Best for databases, boot volumes
- File Storage- Shared filesystem accessed via NFS/SMB; e.g. EFS, Azure Files. Best for shared app data across instances
AWS S3 Storage Classes
Object storage tiers trading cost against access latency/frequency.
- S3 Standard- Frequently accessed data, millisecond access, highest cost per GB
- S3 Intelligent-Tiering- Automatically moves objects between tiers based on access patterns
- S3 Standard-IA- Infrequent access, lower storage cost but has a retrieval fee
- S3 One Zone-IA- Like Standard-IA but stored in a single AZ, cheaper, less durable
- S3 Glacier Instant Retrieval- Archive tier with millisecond retrieval, for rarely accessed data
- S3 Glacier Deep Archive- Lowest cost tier, retrieval takes hours, for long-term compliance archives
Common S3 CLI Commands
Uploading, syncing, and changing storage class via the AWS CLI.
aws s3 cp file.txt s3://my-bucket/ # upload a fileaws s3 sync ./local-dir s3://my-bucket/dir/ # sync a directoryaws s3 ls s3://my-bucket/ # list objectsaws s3 cp s3://my-bucket/file.txt . \ --storage-class GLACIER # change storage class on copy
S3 Lifecycle Configuration (JSON)
Automate tiering and expiration rules instead of managing storage class transitions manually.
{ "Rules": [ { "ID": "tier-and-expire-logs", "Filter": { "Prefix": "logs/" }, "Status": "Enabled", "Transitions": [ { "Days": 30, "StorageClass": "STANDARD_IA" }, { "Days": 90, "StorageClass": "GLACIER" } ], "Expiration": { "Days": 365 }, "NoncurrentVersionTransitions": [ { "NoncurrentDays": 30, "StorageClass": "GLACIER" } ], "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 } } ]}
Multipart Upload for Large Objects
Objects over ~100MB should use multipart upload for resumability and parallel throughput; the CLI does this automatically above its threshold.
# CLI auto-multiparts above the configured threshold (default 8MB)aws configure set default.s3.multipart_threshold 64MBaws configure set default.s3.multipart_chunksize 16MBaws s3 cp big-dataset.tar.gz s3://my-bucket/datasets/ \ --storage-class INTELLIGENT_TIERING# Low-level API flow (what the CLI does under the hood):# 1. create-multipart-upload -> returns UploadId# 2. upload-part (x N, each returns an ETag) # 3. complete-multipart-upload with the list of ETags# Abandoned uploads still incur storage cost until aborted or expired# by a lifecycle rule (AbortIncompleteMultipartUpload).
Provisioned IOPS Block Volumes
gp3 decouples IOPS/throughput from volume size, letting you tune performance independently of capacity.
aws ec2 create-volume \ --volume-type gp3 \ --size 100 \ --iops 8000 \ --throughput 500 \ --availability-zone us-east-1a# io2 Block Express for sub-millisecond latency, sustained high IOPSaws ec2 create-volume \ --volume-type io2 \ --size 500 \ --iops 64000 \ --availability-zone us-east-1a# gp3 IOPS/throughput are billed separately from GB-month storage;# io2 durability is 99.999% vs gp3's 99.8-99.9%
EFS Throughput & Performance Modes
EFS throughput scales with stored data in Bursting mode, or can be provisioned independently for spiky/small datasets.
# Bursting: throughput credits accrue proportional to storage size (default)aws efs create-file-system \ --performance-mode generalPurpose \ --throughput-mode bursting# Elastic: auto-scales with workload, best for unpredictable access patternsaws efs create-file-system \ --performance-mode generalPurpose \ --throughput-mode elastic# Provisioned: fixed MiB/s independent of storage size, for small-but-hot datasetsaws efs create-file-system \ --performance-mode maxIO \ --throughput-mode provisioned \ --provisioned-throughput-in-mibps 256
Cross-Cloud & Advanced Storage Terms
Concepts that matter for multi-cloud comparisons and production tuning beyond the basic type/class breakdown.
- Azure Access Tiers (Hot/Cool/Archive)- Blob Storage equivalent of S3 storage classes; Archive requires rehydration (hours) before read access, like Glacier
- GCS Storage Classes (Standard/Nearline/Coldline/Archive)- Google's tiering by access frequency; minimum storage duration penalties apply below Standard (30/90/365 days)
- S3 Object Lock (WORM)- Write-once-read-many compliance mode preventing deletion/overwrite for a retention period, used for regulatory holds
- Consistency Model- S3 is strongly read-after-write consistent for all operations since Dec 2020; older docs describing eventual consistency are outdated
- Cross-Region Replication (CRR)- Asynchronous, versioning-dependent replication of objects to a bucket in another region for DR or latency
- Presigned URLs- Time-limited, credential-scoped URLs granting temporary object access without making the bucket public
- Requester Pays- Bucket setting that shifts data transfer/request costs to the requester instead of the bucket owner, common for public datasets
- Storage Gateway- Hybrid appliance (file/volume/tape modes) that caches on-prem access to cloud object storage
Use S3 Lifecycle rules to automatically transition objects to cheaper tiers over time (e.g. Standard -> IA after 30 days -> Glacier after 90) instead of manually managing storage classes.