UB
UploadBird
← Back to Blog
S32025-01-0312 min read

Zero-Downtime Migration from S3: A Step-by-Step Guide

By Sam Rodriguez

Stop wrestling with S3

Get started with UploadBird in 5 minutes. No credit card required.

Start Free Trial

You don't need downtime to leave S3. With shadow traffic, batched backfills, and feature flags you can switch storage backends safely. This playbook keeps users happy while you migrate to UploadBird—and gives you a rollback plan if anything looks off.

Shadow reads to build confidence

Keep serving from S3 while reading the same objects from UploadBird in the background. Compare checksums and response times; log mismatches to fix before users ever see UploadBird URLs. This de-risks the cutover.

Backfill with manifests

Generate a manifest of objects to copy. Process by prefix to respect rate limits. Verify integrity with checksums; retry failures; and track progress so you know when you're done. Preserve metadata like content-type and cache headers. Run backfills in batches to avoid throttling and to keep the system responsive.

Flagged rollouts instead of big bangs

Use a feature flag to serve UploadBird URLs to a small slice of traffic. Monitor errors, latency, and CDN cache hits. Ramp to 100% when stable. Keep dual writes briefly, then disable S3 writes and archive the old buckets.

After the switch

Swap presigned URLs for UploadBird's signed access on private assets. Remove IAM/CORS configs you no longer need. Update runbooks to rely on UploadBird audit logs and status. Congratulations: fewer moving parts, predictable pricing, and a simpler upload story.

Observability and rollback

Watch leading indicators: 4xx/5xx rates, median and p95 latency, cache hit ratio, and upload success rate. Keep a rollback switch (the feature flag) until metrics stabilize for a full business cycle. If errors spike, flip back to S3 reads while investigating—because dual copies exist, rollbacks are safe.

Checklist you can run

  • Inventory buckets, prefixes, public vs. private assets, and consumers (web, mobile, third-party).
  • Enable dual writes in your upload handler; log both URLs per object temporarily.
  • Generate and run a manifest-based backfill with checksums and retries.
  • Shadow read to UploadBird and compare hashes/headers for a sampling window.
  • Turn on UploadBird URLs for 5–10% of traffic via a flag; watch dashboards.
  • Ramp to 100% when stable; keep dual writes for a limited soak period.
  • Disable S3 writes, lock buckets, update DNS/links, and clean up IAM/CORS.

Sample timeline

Day 1: instrument dual writes and shadow reads. Days 2–3: run backfill, fix mismatches. Days 4–5: 10% → 50% → 100% rollout with monitoring. Day 6: disable dual writes, update runbooks, and archive old buckets. This is illustrative—adjust to your risk tolerance.

Why UploadBird makes this easier

You replace presigned URL code paths with server-first auth and signed delivery, get malware/NSFW scanning by default, and gain a CDN with image/video optimization. Less glue code, fewer AWS knobs, and a clearer bill—all without downtime.

Ready to simplify your file uploads?

Get Started Free
#s3#migration#zero-downtime#tutorial

Ready to get started?

Join thousands of developers who ship file uploads in minutes, not months.

No credit card required • 30-day money-back guarantee • Cancel anytime

UploadBird | Ship file uploads in minutes, not months