npx skills add ...
npx skills add tigrisdata/skills --skill tigris-s3-migration
Use when migrating from AWS S3, Google Cloud Storage, or Azure Blob to Tigris — shadow buckets via `tigris buckets set-migration`, active drain via `tigris buckets migrate`, bulk copy, SDK endpoint swap, zero-downtime migration
npx skills add tigrisdata/skills --skill tigris-s3-migration
Migrate your object storage to Tigris with zero downtime. Tigris is S3-compatible, so most apps need only an endpoint and credential swap. Shadow buckets enable transparent migration without moving data upfront.
Before doing anything else, install the Tigris CLI if it's not already available:
If you need to install it, tell the user: "I'm installing the Tigris CLI (@tigrisdata/cli) so we can work with Tigris object storage."
| Strategy | Downtime | Best For |
|---|---|---|
| Shadow bucket | Zero | Production apps — Tigris reads from S3 on miss, backfills automatically |
| Bulk copy | Brief | Small datasets, clean cutover |
| Incremental sync | Zero | Large datasets, gradual migration |
Tigris reads from your existing S3 bucket on cache miss and gradually backfills data. No upfront data movement needed.
Add --write-through to also sync new writes back to the source bucket — useful when you want a safe rollback path during the migration window.
How it works:
Migrate everything up front (optional):
Lazy migration only copies objects when they're requested. To actively migrate every remaining object server-side, run:
The command runs in the foreground and reports progress as it goes, so you can fully drain the source before cutting over.
After migration completes:
For smaller datasets or when you want a clean cutover:
Read the resource file for your language to see before/after migration examples:
./resources/sdk-nodejs.md for AWS SDK → Tigris SDK migration./resources/sdk-go.md for AWS SDK → Tigris SDK migration./resources/sdk-python.md for boto3 → tigris-boto3-ext migration, or use the tigris-python-sdk skill for the post-migration developer experience (Django, snapshots, forks, Bundle API)./resources/sdk-ruby.md for aws-sdk-s3 endpoint swap./resources/sdk-php.md for aws-sdk-php endpoint swapFor frameworks with specific Tigris env vars:
| Mistake | Fix |
|---|---|
| Forgot to update presigned URL endpoint | Presigned URLs must use Tigris endpoint, not S3 |
| CORS not configured on Tigris | Re-create CORS rules: tigris buckets cors set |
Region hardcoded to us-east-1 | Use auto for Tigris |
path_style not set | Add force_path_style: true (Ruby/Rails) or use_path_style_endpoint: true (PHP) |
| Custom domain DNS still points to S3 | Update CNAME to point to Tigris |
tigris buckets set-migration — https://www.tigrisdata.com/docs/cli/buckets/set-migrationtigris buckets migrate — https://www.tigrisdata.com/docs/cli/buckets/migrate