Multi-Cloud Storage: Direct Uploads to S3, Azure, GCS & Alibaba OSS
One of the most requested features is here: multi-cloud storage support. You can now configure Tornado to upload downloads directly to your preferred cloud provider, eliminating intermediate servers and egress fees entirely.
Supported Providers
Tornado supports four major cloud storage providers:
- AWS S3 & S3-Compatible — AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2, Wasabi, OVH
- Azure Blob Storage — Azure Storage Accounts with Blob containers
- Google Cloud Storage — GCS buckets with service account authentication
- Alibaba Cloud OSS — Alibaba Object Storage Service
Why Direct Cloud Delivery?
Traditional download services route files through their servers before delivering to you. This creates two problems:
- Egress fees — You pay for data transfer twice: once from their servers, once to your storage.
- Latency — Files take longer to arrive because of the extra hop.
With Tornado's direct delivery, files go straight from the source to your bucket. Zero intermediate storage, zero extra fees.
Configuration Examples
AWS S3
curl -X POST "https://api.tornadoapi.io/user/storage" \
-H "x-api-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"provider": "s3",
"endpoint": "https://s3.us-east-1.amazonaws.com",
"bucket": "my-tornado-downloads",
"region": "us-east-1",
"access_key": "AKIAIOSFODNN7EXAMPLE",
"secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}'Cloudflare R2
curl -X POST "https://api.tornadoapi.io/user/storage" \
-H "x-api-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"provider": "s3",
"endpoint": "https://ACCOUNT_ID.r2.cloudflarestorage.com",
"bucket": "my-downloads",
"region": "auto",
"access_key": "YOUR_R2_ACCESS_KEY",
"secret_key": "YOUR_R2_SECRET_KEY"
}'Azure Blob Storage
curl -X POST "https://api.tornadoapi.io/user/storage" \
-H "x-api-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"provider": "azure_blob",
"account_name": "mystorageaccount",
"container": "tornado-downloads",
"account_key": "your-storage-account-key..."
}'Google Cloud Storage
curl -X POST "https://api.tornadoapi.io/user/storage" \
-H "x-api-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"provider": "gcs",
"project_id": "my-gcp-project",
"bucket": "tornado-downloads",
"service_account_json": "{...}"
}'Presigned URLs
When jobs complete, the s3_url field contains a presigned URL valid for 24 hours, regardless of which provider you use. This lets you access files immediately without exposing your bucket publicly.
Which Provider Should You Choose?
The best storage provider depends on your use case and existing infrastructure:
| Provider | Best For | Egress Pricing | Special Features |
|---|---|---|---|
| AWS S3 | Most teams, broad ecosystem | $0.09/GB | Lifecycle policies, Glacier archival |
| Cloudflare R2 | Frequent access, cost optimization | $0 (free!) | Zero egress, S3-compatible |
| Azure Blob | Microsoft/Azure shops | $0.087/GB | Hot/Cool/Archive tiers |
| Google Cloud | AI/ML teams on GCP | $0.12/GB | Vertex AI integration |
| Alibaba OSS | Asia-Pacific operations | $0.12/GB | Low latency in Asia |
Pro tip for AI teams: If you're building a pipeline that processes videos frequently (like an AI long-form to short-form tool), Cloudflare R2 is the best choice. Zero egress fees mean you can read files from your bucket as many times as needed without cost. Combined with Tornado's direct delivery, you get the most cost-effective video ingestion pipeline possible.
Multi-Cloud Strategy
Some teams use multiple storage providers for different purposes:
- R2 for hot data — Videos being actively processed by your AI pipeline
- S3 for warm data — Completed datasets that need occasional access
- S3 Glacier for cold data — Long-term archival at minimal cost
You can switch storage providers at any time by updating your storage configuration. Tornado will use the new credentials for all subsequent downloads.
Why Direct Upload Matters at Scale
When you're downloading several terabytes per hour with Tornado, the traditional approach of downloading to an intermediate server and then uploading to cloud storage becomes impossibly expensive and slow. At 10 TB/month, egress fees alone cost $900-1,200. At 50 TB/month, you're looking at $4,500-6,000 in pure data transfer costs.
Tornado's direct delivery eliminates this entirely. Files stream directly from source to your bucket, saving you thousands per month. Learn more about the cost savings in our zero egress fees deep dive.
Security Best Practices
- Use least privilege — Create dedicated IAM credentials with only the permissions needed:
PutObject,GetObject,DeleteObject,ListBucket. - Rotate credentials regularly — Set up automated key rotation every 90 days.
- Enable bucket logging — Monitor access to your storage for security audits.
- Use bucket policies — Restrict access by IP or VPC endpoint for production environments.
- Enable encryption — Use SSE-S3 or SSE-KMS for data at rest encryption.