shiichan

R2's Sippy Now Migrates Data from Azure Blob Storage and S3-Compatible Providers Too!

Hey everyone, it's Shiichan! I found some news that makes data migration even easier, so let's jump right in!

Cloudflare Changelog developers.cloudflare.com

What was announced?

Cloudflare's Changelog announced that Sippy, R2's migration tool, now supports migrating data from Azure Blob Storage and any S3-compatible object storage provider. Until now, Sippy only worked with Amazon S3 and Google Cloud Storage, so this adds two brand-new options.

The story so far

Sippy lets you incrementally migrate data from your existing object storage to Cloudflare R2. It copies objects to R2 as your application requests them, so you don't have to move your entire dataset upfront, and you don't pay migration-specific egress fees either.

But until now, that only worked if your source was Amazon S3 or Google Cloud Storage. If you were on Azure Blob Storage or some other S3-compatible storage, you couldn't take advantage of Sippy at all.

What changes

With this update, teams using Azure Blob Storage, or S3-compatible storage like MinIO or Backblaze B2, can now use the same incremental migration path to move to R2. If you're running storage across multiple clouds and have been hesitant about a full one-time migration to R2, this opens up a lot more options for you.

Dive Deep

Enabling Sippy is a single command:

npx wrangler r2 bucket sippy enable {BUCKET_NAME}

Running this walks you through prompts to select and configure your source storage provider. Here's what each provider needs:

  • For Azure Blob Storage
    • Your storage account name
    • Your container name
    • Either an account key, or a SAS (shared access signature) token with read and list permissions
  • For an S3-compatible provider
    • The S3 API endpoint URL
    • A read-only Access Key ID and Secret Access Key

Once Sippy is enabled, requests for objects that aren't in R2 yet are served from your source bucket while being copied to R2 at the same time. Subsequent requests for those same objects are served directly from R2. Check the Sippy documentation for full setup instructions and credential requirements.

Wrap-up

  • Sippy now supports migrating data from Azure Blob Storage and S3-compatible storage providers
  • Enable it with a single command: npx wrangler r2 bucket sippy enable {BUCKET_NAME}
  • Azure needs an account key or SAS token; S3-compatible providers need an endpoint URL and read-only keys
  • Unmigrated objects are served from the source and copied to R2 on first request, then served from R2 afterward

If you're an infra person running Azure or a self-hosted S3-compatible store and worried about downtime or egress costs from a big-bang migration, this update is especially worth your attention!