Cloud

What is Cloud Object Storage? S3, GCS, and Azure Blob Explained

Cloud object storage is how modern apps store files at scale. Learn how it works, compare AWS S3 vs Google Cloud Storage vs Azure Blob pricing and features, and master presigned URLs, lifecycle policies, and versioning.

A
Abhishek Patel10 min read

Infrastructure engineer with 10+ years building production systems on AWS, GCP,…

What is Cloud Object Storage? S3, GCS, and Azure Blob Explained
What is Cloud Object Storage? S3, GCS, and Azure Blob Explained

Introduction

Every modern application stores files somewhere — profile pictures, database backups, machine learning datasets, log archives. If you've ever uploaded an image to a web app or downloaded a CSV report, object storage was almost certainly involved behind the scenes.

Cloud object storage is the dominant way teams store unstructured data today. AWS S3 alone holds over 350 trillion objects. But most developers treat it like a black box: upload a file, get a URL, move on. That's fine until you get a surprise bill, lose data to a misconfigured bucket, or wonder why your storage costs doubled overnight.

This guide breaks down how object storage actually works, compares the three major providers — AWS S3, Google Cloud Storage (GCS), and Azure Blob Storage — and gives you the practical knowledge to make smart decisions about when and how to use it.

What Is Cloud Object Storage?

Cloud object storage is a data storage architecture that manages data as discrete units called objects, rather than as files in a hierarchy (file storage) or blocks on a disk (block storage). Each object contains the data itself, metadata describing it, and a unique identifier.

Definition: Object storage is a flat-namespace storage system where each piece of data is stored as a self-contained object with metadata and a unique key — no folders, no file paths, no directory tree.

Objects, Buckets, and Keys

Three concepts form the foundation of every object storage service:

  • Object — The actual data (an image, a log file, a Parquet dataset) plus its metadata (content type, creation date, custom tags).
  • Bucket — A top-level container that holds objects. Think of it as a namespace. Bucket names are globally unique on most providers.
  • Key — The unique identifier for an object within a bucket. Keys can include forward slashes (logs/2026/04/access.log) to simulate folder structure, but there are no actual directories — it's just a flat namespace with a naming convention.

How It Differs from Block and File Storage

FeatureObject StorageBlock StorageFile Storage
StructureFlat namespace (key-value)Fixed-size blocksHierarchical directories
AccessHTTP/REST APIOS-level mountNFS/SMB mount
ScalabilityVirtually unlimitedLimited by volume sizeLimited by filesystem
Best ForImages, backups, logs, data lakesDatabases, VMs, boot volumesShared drives, home directories
LatencyHigher (HTTP overhead)Very low (direct disk)Low-medium
CostCheapest per GBMost expensive per GBMiddle ground

Why Object Storage Scales So Effortlessly

Here's the thing: traditional filesystems hit a wall. Once you have tens of millions of files in nested directories, performance degrades — listing directories slows down, metadata lookups choke, and you start needing to shard manually.

Object storage sidesteps all of this. Because there's no directory tree to traverse, lookups are O(1) hash-based operations. The system distributes objects across thousands of physical drives automatically. You never think about partitions, volumes, or disk sizes. You just write objects and the system handles the rest.

All three major cloud providers guarantee 99.999999999% (11 nines) durability, meaning if you stored 10 million objects, you'd statistically lose one every 10,000 years. They achieve this by automatically replicating data across multiple physical locations.

Comparing AWS S3, Google Cloud Storage, and Azure Blob

All three services solve the same core problem, but they differ in pricing models, consistency guarantees, and ecosystem integration. Here's an honest breakdown.

Pricing Comparison

Cost FactorAWS S3 StandardGoogle Cloud Storage StandardAzure Blob Hot Tier
Storage (per GB/month)$0.023$0.020$0.018
PUT requests (per 1,000)$0.005$0.005$0.005
GET requests (per 1,000)$0.0004$0.0004$0.0004
Data egress (per GB)$0.09$0.12$0.087
Free tier5 GB (12 months)5 GB (Always Free)5 GB (12 months)

Watch out: Egress costs are where cloud storage bills explode. Storing 1 TB is cheap (~$20/month). Serving that 1 TB to users costs $90–120/month. Always put a CDN in front of frequently accessed objects.

Consistency Models

This used to be a major differentiator. AWS S3 was eventually consistent for overwrites until December 2020, which caused nasty bugs where you'd update an object and immediately read back the old version. Today, all three providers offer strong read-after-write consistency:

  • AWS S3 — Strong consistency for all operations since December 2020
  • GCS — Strong consistency from day one (Google's infrastructure advantage)
  • Azure Blob — Strong consistency for all operations

Ecosystem and Integration

Your choice often comes down to which cloud you're already using:

  • AWS S3 — The original and most widely supported. Nearly every tool, SDK, and service speaks S3. Many non-AWS services (MinIO, DigitalOcean Spaces, Cloudflare R2) implement the S3 API.
  • GCS — Tight integration with BigQuery, Vertex AI, and Google's data analytics stack. Best choice if you're doing ML/AI workloads on GCP.
  • Azure Blob — Deep integration with Azure Active Directory, .NET ecosystem, and Microsoft 365. Natural fit for enterprise shops running on Azure.

Practical Concepts Every Developer Should Know

Presigned URLs

A presigned URL grants temporary, time-limited access to a private object without exposing your credentials. Your server generates the URL (valid for minutes or hours), and the client downloads directly from the storage provider — no data flows through your backend.

// AWS SDK v3 — Generate a presigned download URL
import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';

const client = new S3Client({ region: 'us-east-1' });

const url = await getSignedUrl(client, new GetObjectCommand({
  Bucket: 'my-app-uploads',
  Key: 'user-avatars/abc123.jpg',
}), { expiresIn: 3600 }); // 1 hour

Pro tip: Use presigned URLs for both uploads and downloads. For uploads, generate a presigned PUT URL so users upload directly to S3 — your server never touches the file bytes, saving bandwidth and compute.

Lifecycle Policies

Lifecycle policies automatically transition or delete objects based on age. This is how you keep storage costs under control without manual cleanup:

  1. Day 0–30: Store in Standard tier (frequent access)
  2. Day 30–90: Transition to Infrequent Access (cheaper storage, higher retrieval cost)
  3. Day 90–365: Move to Glacier/Archive (pennies per GB, minutes-to-hours retrieval)
  4. Day 365+: Delete automatically

Every provider supports this. Set it once and forget — your old logs and backups migrate to cheaper tiers automatically.

Versioning

Object versioning keeps every previous version of an object when it's overwritten or deleted. This protects against accidental deletes and ransomware — you can always roll back to a previous version.

The trade-off: every version counts toward your storage bill. Combine versioning with lifecycle policies to auto-delete old versions after a retention period.

Common Mistakes to Avoid

Don't Use Object Storage as a Database

Object storage is optimized for throughput, not latency. If you need sub-millisecond reads, random access, or transactional writes, use a database. Object storage is for blobs — large, immutable files you write once and read back.

Don't Leave Buckets Public

Misconfigured public buckets have caused some of the largest data breaches in history. All three providers now default to private access and offer tools to detect public buckets — use them.

Don't Ignore Egress Costs

Storing data is cheap. Moving data out is not. If you're serving files directly from object storage to end users, put a CDN (CloudFront, Cloud CDN, Azure CDN) in front of it. Better yet, consider providers like Cloudflare R2 that charge zero egress fees.

When to Use Object Storage (And When Not To)

Use Object Storage ForDon't Use Object Storage For
Static assets (images, CSS, JS)Relational data (use PostgreSQL)
User-uploaded filesReal-time data (use Redis/streams)
Log archives and backupsFilesystem mounts (use EFS/Filestore)
Data lake / analytics datasetsLow-latency key-value lookups (use DynamoDB)
ML training data and model artifactsFrequently mutated small files

Frequently Asked Questions

What is the difference between object storage and file storage?

Object storage uses a flat namespace where each piece of data is stored as a self-contained object with metadata and a unique key. File storage organizes data in a hierarchical directory tree with folders and paths. Object storage scales better for large volumes of unstructured data, while file storage is better for shared drives and applications that need POSIX filesystem semantics.

Is AWS S3 the same as object storage?

AWS S3 (Simple Storage Service) is Amazon's implementation of cloud object storage — the most popular one. But object storage is a broader concept. Google Cloud Storage and Azure Blob Storage are alternatives, and open-source tools like MinIO let you run S3-compatible object storage on your own servers.

How much does cloud object storage cost?

Standard tier storage costs between $0.018–$0.023 per GB per month across major providers. A typical application storing 100 GB of user uploads pays roughly $2/month for storage. The real cost driver is egress — transferring data out to users costs $0.08–$0.12 per GB, which adds up fast for media-heavy applications.

Can I use object storage for hosting a website?

Yes. All three major providers support static website hosting directly from a storage bucket. You upload your HTML, CSS, and JavaScript files, enable the static hosting feature, and point your domain at it. Combined with a CDN, this is one of the cheapest and most reliable ways to host static sites and single-page applications.

What is a presigned URL and why should I use one?

A presigned URL is a time-limited URL that grants temporary access to a private object in your storage bucket. Instead of routing file downloads through your server (which costs compute and bandwidth), you generate a URL that lets the client download directly from the storage provider. The URL expires after a set time, keeping your data secure.

How durable is cloud object storage?

All major cloud providers guarantee 99.999999999% (11 nines) annual durability for their standard storage tiers. This means if you store 10 million objects, you would statistically lose one object every 10,000 years. They achieve this by automatically replicating your data across multiple physical facilities within a region.

Should I use S3, GCS, or Azure Blob?

Choose based on your existing cloud ecosystem. If you're on AWS, use S3 — it has the broadest third-party support. If you're doing data analytics or ML on GCP, use GCS for its BigQuery integration. If you're an Azure shop, Azure Blob integrates deeply with Active Directory and the .NET ecosystem. For egress-heavy workloads, consider Cloudflare R2 which charges no egress fees.

Conclusion

Cloud object storage is foundational infrastructure that every developer interacts with, whether they realize it or not. The core concepts — buckets, objects, keys, lifecycle policies, presigned URLs — are consistent across all major providers. The differences come down to pricing, ecosystem integration, and where the rest of your infrastructure lives.

Pick the provider that matches your cloud, set up lifecycle policies from day one, put a CDN in front of anything user-facing, and never leave a bucket public. Get those basics right and object storage becomes one of the most reliable, lowest-maintenance parts of your stack.

A

Written by

Abhishek Patel

Infrastructure engineer with 10+ years building production systems on AWS, GCP, and bare metal. Writes practical guides on cloud architecture, containers, networking, and Linux for developers who want to understand how things actually work under the hood.

Related Articles

Enjoyed this article?

Get more like this in your inbox. No spam, unsubscribe anytime.

Comments

Loading comments...

Leave a comment

Stay in the loop

New articles delivered to your inbox. No spam.