DevOps

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).

Mahdi Ben RhoumaMahdi Ben Rhouma
Updated
7 min

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 StorageAWS S3 (eu-west-1)
Standard storage (Multi-AZ)€0.01606/GB/month$0.023/GB/month
Standard storage (One Zone)€0.00803/GB/monthS3 One Zone-IA $0.01/GB/month
Cold tierGlacier €0.00254/GB/month + €0.009/GB restoreGlacier / Deep Archive, cheaper still
Egress to internet75 GB/month free, then €0.01/GB$0.09/GB after the first 100 GB/month
Inter-region transfer (PAR/AMS/WAW)freecharged
API requests (PUT/GET/LIST)included — no per-request chargecharged 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#

bash
# 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-par

2. Update your application endpoint#

ts
// 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#

bash
# 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 64

For 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. Set forcePathStyle: false explicitly.
  • Using eu-west-1 as region with Scaleway endpoint — the AWS SDK validates the region. Use fr-par or nl-ams, not eu-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

|

Have more questions? Contact us

Still stuck? Paste your error.

Paste the error message or stack trace — we check it against every fix and tool on the site.

Matching happens in your browser. When you search, a cleaned error signature is sent so we can spot errors we do not cover yet — never the raw text, your IP address or your e-mail. Do not paste passwords or keys. Details

Written by

Mahdi Ben Rhouma
Mahdi Ben Rhouma

Full-Stack Dev — Next.js & Supabase

Solo developer building SaaS products with Next.js and Supabase. Writing about production patterns the official docs skip.

Remote

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.