Scaleway vs AWS S3: EU Pricing & Data Residency 2026
AWS S3 is the default for object storage, but for EU-only workloads it is more expensive than necessary and you must explicitly select an EU region to satisfy GDPR data residency. Scaleway Object Storage stores every byte in Paris or Amsterdam by default — there is no US region to opt out of — uses the same S3-compatible API, and costs 50-70% less for typical workloads. Here is the 2026 pricing breakdown, the API parity list, and the gotchas that make Scaleway a no-go for some workloads (no Glacier tier, fewer storage classes, no Lambda@Edge equivalent).
If you run a SaaS app, a media pipeline, or a backup job for EU customers, the question of where your bytes live is not academic. AWS S3 is the default — but its EU regions are opt-in (eu-west-1, eu-central-1, eu-west-3) and its pricing is calibrated for the US market. Scaleway Object Storage, hosted entirely in Paris and Amsterdam, offers the same S3 API at roughly half the price. Here is the 2026 breakdown.
Pricing comparison (2026, EU)#
| Scaleway Object Storage | AWS S3 (eu-west-1) | |
|---|---|---|
| Standard storage | €0.0105/GB/month (€0.000015/GB/hour) | $0.023/GB/month |
| Infrequent Access | €0.0025/GB/month + retrieval fee | $0.0125/GB/month + retrieval fee |
| Egress to internet | €0.008/GB outside EU; free intra-EU | $0.09/GB (first 10 TB) |
| PUT/POST requests | €0.005 per 1,000 | $0.005 per 1,000 |
| GET requests | €0.0004 per 10,000 | $0.0004 per 10,000 |
At 1 EUR ≈ 1.08 USD (2026-08), Scaleway Standard is roughly 55-60% cheaper than S3 Standard in eu-west-1. Egress is the bigger win: serving 500 GB/month to EU customers costs about €0 on Scaleway (intra-EU free) vs $45 on AWS S3 — a 10x difference.
The complete price list is at scaleway.com/en/object-storage/pricing and aws.amazon.com/s3/pricing. Prices change; verify before quoting to customers.
S3 API parity#
Scaleway implements the S3 API for the operations you actually use. The official SDKs and tools work unchanged:
- Buckets — create, list, delete, versioning, lifecycle.
- Objects — PUT, GET, DELETE, HEAD, multipart upload, copy.
- Presigned URLs — both GET and PUT, valid for up to 7 days (Scaleway) vs 7 days (S3).
- Server-side encryption — AES-256 with Scaleway-managed keys (SSE-S3 equivalent).
- Cross-region replication — yes, with caveats (asynchronous, eventual consistency).
- Object Lock — yes, WORM-compliant retention for compliance use cases.
- Multipart upload — yes, same chunked upload model.
- IAM policies — yes, Scaleway IAM supports S3-style resource policies.
What is not available:
- Glacier / Deep Archive — no cold-tier storage at S3 prices. For archival under €0.001/GB/month, AWS Glacier Deep Archive remains the cheapest.
- Intelligent-Tiering — automatic tier transitions; on Scaleway you set lifecycle rules manually.
- Object Lambda — on-the-fly transformation (resize, redact). Run a Cloudflare Worker or a small Scaleway Function instead.
- AWS EventBridge / S3 Event Notifications → Lambda — Scaleway Object Storage emits webhooks; you handle them in a Scaleway Function or external HTTP endpoint.
- Requester Pays — not supported; the bucket owner always pays egress.
For 80% of EU SaaS workloads, the parity list above covers everything you need.
Where the data lives#
Scaleway has two EU regions and no US region:
- Paris (DC3) — default region for new buckets. Endpoints:
s3.fr-par.scw.cloud,s3.nl-ams.scw.cloud. - Amsterdam (DC1) — West Europe, lower latency for NL/BE/UK. Endpoints:
s3.nl-ams.scw.cloud.
Every byte of every object stays in the region you create the bucket in. There is no opt-in for US storage — you cannot accidentally create an us-east-1 bucket.
AWS S3 requires explicit region selection. The default console flow is us-east-1 (N. Virginia); you must remember to pick eu-west-1 (Ireland), eu-central-1 (Frankfurt), eu-west-3 (Paris), or eu-north-1 (Stockholm) for GDPR-compliant workloads. Data never leaves the chosen region, but the company is US-headquartered and subject to the CLOUD Act. For customers in regulated industries (health, finance, government), this distinction can matter.
Migration in 4 steps#
For most applications, the change is an endpoint URL swap.
1. Create a Scaleway bucket#
# Install scaleway-cli
brew install scaleway-cli # macOS
sudo apt install scaleway-cli # Debian/Ubuntu
# Authenticate
scw init
# Create a bucket in Paris
scw object bucket create my-eu-bucket region=fr-par2. Update your application endpoint#
// Before (AWS S3 eu-west-1)
const s3 = new S3Client({
region: 'eu-west-1',
credentials: { accessKeyId, secretAccessKey },
});
// After (Scaleway Paris)
const s3 = new S3Client({
region: 'fr-par',
endpoint: 'https://s3.fr-par.scw.cloud',
credentials: { accessKeyId, secretAccessKey },
forcePathStyle: false, // Scaleway supports virtual-hosted-style URLs
});The AWS SDK in Node.js, Python (boto3), Go, Java, Ruby, PHP all work unchanged. The only addition is the endpoint parameter.
3. Migrate bulk data with rclone#
# Configure both remotes (interactive)
rclone config
# > n) New remote
# > name> aws-prod
# > type> s3
# > provider> AWS
# > access_key_id> AKIA...
# > secret_access_key> ...
# > region> eu-west-1
# > name> scw-prod
# > type> s3
# > provider> Scaleway
# > access_key_id> SCW...
# > secret_access_key> ...
# > endpoint> s3.fr-par.scw.cloud
# Copy with server-side transfer where possible
rclone copy aws-prod:my-bucket scw-prod:my-eu-bucket --transfers 32 --checkers 64For very large buckets (10 TB+), run rclone copy from a Scaleway Virtual Instance in Paris — intra-provider transfer is unmetered and 10x faster than copying over the public internet.
4. Update DNS / CDN#
If you serve objects via a custom domain (cdn.example.com → bucket), update the CNAME / origin to the new Scaleway endpoint. Cloudflare and Bunny.net both support Scaleway as an origin.
Common mistakes#
- Forgetting
forcePathStyle— Scaleway supports both virtual-hosted-style (bucket.s3.fr-par.scw.cloud) and path-style (s3.fr-par.scw.cloud/bucket). Some AWS SDK configurations default to path-style and break on Scaleway. SetforcePathStyle: falseexplicitly. - Using
eu-west-1as region with Scaleway endpoint — the AWS SDK validates the region. Usefr-parornl-ams, noteu-west-1. - Expecting Glacier tier — for cold storage under €0.001/GB/month, Scaleway has no equivalent. Use Hetzner Storage Box (€3.81/month for 1 TB) or OVHcloud Cloud Archive (€0.0025/GB/month) for archival, or keep AWS S3 Glacier for that one workload.
- Cross-region replication surprises — Scaleway supports it but eventual consistency is higher than S3. Don't assume read-after-write semantics across regions.
- CLOUD Act assumptions — Scaleway is a French company, headquartered in Paris, with primary infrastructure in France. CLOUD Act does not apply. For US-headquartered workloads, AWS S3 remains the answer.
- Pricing calculation errors — Scaleway charges per hour of storage, not per month. Multiply by 730 (average hours/month) for a monthly estimate. Egress is per GB, not per request.
- IAM policy mismatch — Scaleway IAM supports S3-style policies but the actions and condition keys differ. Test in a sandbox bucket before locking down prod.
When to choose Scaleway vs AWS S3#
Choose Scaleway Object Storage when:
- Your customers are EU-based and you need GDPR-by-default (no opt-in region selection).
- Your workload is read-heavy with significant egress to EU customers.
- You want to consolidate infrastructure with a French/EU provider (Scaleway also offers VPS, Managed PostgreSQL, Kubernetes, Functions).
- You do not need Glacier-tier archival or AWS-native integrations (Lambda, EventBridge).
Choose AWS S3 when:
- You need cold archival at sub-€0.001/GB/month (Glacier Deep Archive).
- You depend on AWS-native services (Lambda@Edge, Object Lambda, Athena, EventBridge → Lambda).
- Your customers are global and you need multi-region replication across continents.
- You are already heavily invested in AWS IAM, CloudFormation, or CDK and the migration cost outweighs the savings.
For most EU SaaS apps — content sites, B2B tools, internal dashboards, image hosting — Scaleway is the better default. The price difference alone (50-70% on storage, 10x on egress) often exceeds the development cost of the migration.
Official references: Scaleway Object Storage Documentation, Scaleway Object Storage Pricing, AWS S3 Pricing, GDPR.eu — official EU summary, rclone — Scaleway provider.
Related Articles#
- PostgreSQL on Hetzner vs AWS RDS: EU Cost Breakdown 2026 (forthcoming)
- Supabase Local Dev with Docker on Hetzner (forthcoming)
- Self-Hosted Plausible vs Google Analytics: GDPR by Default (forthcoming)
- Cloudflare R2 vs AWS S3: Zero-Egress Pricing Comparison (forthcoming)
- PostgreSQL Slow Queries Fix
Frequently Asked Questions
One email a month — no fluff
RLS gotchas, Next.js cache debugging, and the one Supabase setting that bit me last month.
Continue Reading
Self-Hosted Plausible vs GA4: GDPR by Default (2026)
Google Analytics 4 is found illegal in multiple EU countries (Austria, France, Italy, Denmark, Finland, Norway, Sweden) because it transfers user data to the US. To stay compliant you need a consent banner, a Data Processing Agreement, and Consent Mode v2 — and the EU-US Data Privacy Framework on which Google relies is itself under legal threat at the EU's top court. Self-hosted Plausible Analytics collects no personal data, sets no cookies, and runs on your own server. Here is the 2026 setup, the cost, the feature gaps you should plan for (no heatmaps, no BigQuery export, no Google Ads Smart Bidding), and the deployment steps on a Hetzner VPS or Scaleway Stardust.
Docker Tutorial 2026: Dev Environment with Compose
Step-by-step guide to creating a production-ready Docker development environment with hot reload, debugging, and Docker Compose.
Firebase webframeworks Not Enabled in GitHub Actions: Fix
Running firebase experiments:enable webframeworks on your laptop does nothing for GitHub Actions. Here is the env var the CLI actually reads, the complete workflow, and why Firebase now steers Next.js apps to App Hosting.
Browse by Topic
Find stories that matter to you.
