Loading...
Loading...
Use when migrating from AWS S3, Google Cloud Storage, or Azure Blob to Tigris — shadow buckets, bulk copy, SDK endpoint swap, zero-downtime migration
npx skill4agent add tigrisdata/skills tigris-s3-migrationtigris help || npm install -g @tigrisdata/cli@tigrisdata/cli| 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 |
# Create a Tigris bucket that shadows your S3 bucket
tigris buckets create my-app-uploads \
--shadow-source s3://my-existing-s3-bucket \
--shadow-region us-east-1 \
--shadow-access-key AKIA_YOUR_AWS_KEY \
--shadow-secret-key YOUR_AWS_SECRET# Verify object counts match
tigris ls t3://my-app-uploads --recursive | wc -l
aws s3 ls s3://my-existing-s3-bucket --recursive | wc -l
# Remove shadow source (makes Tigris the sole source)
tigris buckets update my-app-uploads --remove-shadow# Copy all objects from S3 to Tigris
tigris cp s3://my-existing-bucket t3://my-app-uploads -r
# Or use AWS CLI pointed at Tigris
AWS_ENDPOINT_URL_S3=https://t3.storage.dev \
AWS_ACCESS_KEY_ID=tid_xxx \
AWS_SECRET_ACCESS_KEY=tsec_yyy \
aws s3 sync s3://my-existing-bucket s3://my-app-uploadsgsutil -m cp -r gs://my-gcs-bucket /tmp/migration/
tigris cp /tmp/migration/ t3://my-app-uploads/ -raz storage blob download-batch -d /tmp/migration/ -s my-container
tigris cp /tmp/migration/ t3://my-app-uploads/ -r./resources/sdk-nodejs.md./resources/sdk-go.md./resources/sdk-python.md./resources/sdk-ruby.md./resources/sdk-php.md# Before (AWS)
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=us-east-1
S3_BUCKET=my-bucket
# After (Tigris)
AWS_ACCESS_KEY_ID=tid_xxx
AWS_SECRET_ACCESS_KEY=tsec_yyy
AWS_ENDPOINT_URL_S3=https://t3.storage.dev
AWS_REGION=auto
S3_BUCKET=my-bucket # bucket name can stay the sameTIGRIS_STORAGE_ACCESS_KEY_ID=tid_xxx
TIGRIS_STORAGE_SECRET_ACCESS_KEY=tsec_yyy
TIGRIS_STORAGE_ENDPOINT=https://t3.storage.dev
TIGRIS_STORAGE_BUCKET=my-bucket| 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: |
Region hardcoded to | Use |
| Add |
| Custom domain DNS still points to S3 | Update CNAME to point to Tigris |