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 25-60% less on storage depending on the tier you pick. Here is the 2026 pricing breakdown, the API parity list, and the gotchas that make Scaleway a no-go for some workloads (fewer storage classes, no Object Lambda, 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, Amsterdam, and Warsaw, 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 (Multi-AZ) | €0.01606/GB/month | $0.023/GB/month |
| Standard storage (One Zone) | €0.00803/GB/month | S3 One Zone-IA $0.01/GB/month |
| Cold tier | Glacier €0.00254/GB/month + €0.009/GB restore | Glacier / Deep Archive, cheaper still |
| Egress to internet | 75 GB/month free, then €0.01/GB | $0.09/GB after the first 100 GB/month |
| Inter-region transfer (PAR/AMS/WAW) | free | charged |
| API requests (PUT/GET/LIST) | included — no per-request charge | charged per request |
At 1 EUR ≈ 1.08 USD, Scaleway Standard Multi-AZ is about 25% cheaper than S3 Standard in eu-west-1, and Scaleway One Zone is about 13% cheaper than its real equivalent, S3 One Zone-IA — comparing Scaleway One Zone against S3 Standard instead would overstate the gap, since those two tiers are not equivalent. Egress is still the bigger win: serving 500 GB/month costs €4.25 on Scaleway (75 GB free, then 425 GB × €0.01) vs $36 on AWS S3 (100 GB free, then 400 GB × $0.09) — roughly 8x. The quieter win is requests: Scaleway does not bill them at all, so a request-heavy workload that costs $9 in PUT/GET fees on S3 costs €0.
Scaleway figures verified 2026-09-10 against scaleway.com/en/pricing/storage. AWS figures verified 2026-10-26 against AWS's own Price List API for the eu-west-1 region (the API's own publicationDate: 2026-10-15) — the One Zone-IA figure on this page was previously $0.0125/GB, corrected here to the API's $0.01/GB. 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:
- Deep-Archive pricing — Scaleway does offer Glacier (€0.00254/GB/month + €0.009/GB restore), but nothing at S3 Deep Archive rates. For archival under €0.001/GB/month, AWS 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 three EU regions for Standard storage and no US region:
- Paris (DC3) — default region for new buckets. Endpoint:
s3.fr-par.scw.cloud. - Amsterdam (DC1) — West Europe, lower latency for NL/BE/UK. Endpoint:
s3.nl-ams.scw.cloud. - Warsaw (PL-WAW) — Central Europe. Endpoint:
s3.pl-waw.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 scw # macOS
curl -s https://raw.githubusercontent.com/scaleway/scaleway-cli/main/scripts/get.sh | sh # Linux
# 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
# Different remotes, so this downloads from AWS and uploads to Scaleway
# (rclone's server-side copy only works within the same remote)
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. - Assuming Scaleway has no cold tier — it does: Glacier at €0.00254/GB/month, plus a €0.009/GB restore fee that catches people who treat it as warm storage. What it lacks is a sub-€0.001/GB Deep-Archive equivalent; for that, keep AWS S3 Glacier Deep Archive 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.
- Assuming egress is free inside the EU — it is not. Scaleway gives 75 GB of internet egress free every month, then bills €0.01/GB. What is free is transfer between Scaleway regions (PAR ↔ AMS ↔ WAW) and intra-regional traffic. Budget the internet egress; it is still ~8x cheaper than S3, not zero.
- 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 (13-25% on storage depending on the tier, ~8x on egress, and zero request fees) 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.
Further reading: Self-Hosted Plausible vs GA4: GDPR by Default (2026), Fix 'exec format error' on AWS Fargate: ARM vs x86 images, Fix Docker Compose 'Exec format error' loading a library.
Frequently Asked Questions
Still stuck? Paste your error.
Paste the error message or stack trace — we check it against every fix and tool on the site.
One email a month — the latest explained errors
What the site published that month — mostly Next.js, Supabase and Node errors, explained. You confirm by email; unsubscribe any time in one click.
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 a Scaleway Stardust instance.
Fix 'exec format error' on AWS Fargate: ARM vs x86 images
Your container runs locally but Fargate kills it on start. Check which CPU architecture the image was built for, then rebuild or change the task platform.
Fix Cannot find module '/dist/main' in a Docker build
Find out which file the builder stage really emitted, then fix the Dockerfile order and the TypeScript output layout so node dist/main starts.


