Search

Search pages, services, tech stack, and blog posts

S3

S3 DatabaseScalable file storage for any application

Amazon S3 and S3-compatible services (Cloudflare R2, Supabase Storage, MinIO) power file uploads, media delivery, and backup for your application — with presigned URLs, lifecycle policies, and CDN distribution.

Amazon S3 (Simple Storage Service) is the industry standard for object storage — storing files, media, backups, and static assets at any scale. Its API has become the de facto standard, supported by compatible services like Cloudflare R2, Supabase Storage, and MinIO. S3 integrates with CDNs (CloudFront, Cloudflare) for global asset delivery, supports presigned URLs for secure direct browser uploads, and provides lifecycle policies for automatic data tiering and cleanup. Whether you're storing user uploads, serving a static site, or archiving terabytes of data, S3's API is the universal interface.

Quick start

bash
# Install AWS CLI
brew install awscli
aws configure

# Create a bucket
aws s3 mb s3://my-bucket

# Upload a file
aws s3 cp ./file.txt s3://my-bucket/

# Or use the JavaScript SDK
npm install @aws-sdk/client-s3

Read the full documentation at docs.aws.amazon.com/s3/

Direct browser uploads

Presigned URLs let clients upload directly to S3 — bypasses your server, no bandwidth cost.

CDN distribution

CloudFront, Cloudflare, or BunnyCDN in front of S3 — assets served from edge nodes near your users.

Lifecycle policies

Automatically tier old objects to cheaper storage classes or delete expired files — cost control on autopilot.

Signed URLs & access control

Private buckets with time-limited presigned URLs — secure file access without exposing bucket credentials.

R2 zero egress

Cloudflare R2 is S3-compatible with zero egress fees — significant savings for high-bandwidth workloads.

MinIO self-hosted

MinIO for on-premise or private cloud S3 — identical API, runs anywhere Docker does.

Why it's hard

Egress cost management

AWS S3 charges for data transfer out (egress). High-bandwidth applications can accumulate significant egress fees. Cloudflare R2 (zero egress) or CloudFront CDN caching can dramatically reduce costs.

Access control complexity

S3 bucket policies, IAM policies, and ACLs can interact in confusing ways. Start with private buckets and presigned URLs — avoid public bucket access unless absolutely necessary.

Eventual consistency awareness

S3 provides strong read-after-write consistency for PUTs, but listing operations may show stale results briefly. Design your application to handle this for listing-dependent workflows.

Best practices

Use presigned URLs for uploads

Generate server-side presigned URLs and let clients upload directly to S3 — bypasses your server, reduces bandwidth costs, and scales infinitely.

Put a CDN in front of public assets

CloudFront or Cloudflare in front of S3 caches assets at edge locations — faster delivery and lower S3 egress costs.

Configure lifecycle policies

Automatically transition old objects to cheaper storage classes (Glacier) or delete expired files — cost control without manual intervention.

Frequently asked questions



Want to build with S3?

Talk to our engineering team about your S3 architecture. We'll respond within 24 hours.

1 spot available in May 2026Apr 2026 fully booked

We limit intake each month so every project gets the focus it deserves.