Testing download speed for 2 GiB file from EU S3 buckets | June 2026
File size: 2 GiB (random data)
Source (client): EC2 instance in AWS
Bucket 1: eu-south-2 (Spain, Zaragoza)
Bucket 2: eu-central-1 (Frankfurt, Germany)
Bucket 3: eu-north-1 (Stockholm, Sweden)
Access: Private (no public access)
aws s3 cp s3://bucket/file.bin ./output.bin --region eu-south-2
aws s3api put-bucket-accelerate-configuration --bucket bucket --accelerate-configuration Status=Enabled
aws s3 cp s3://bucket/file.bin ./output.bin --endpoint-url https://s3-accelerate.amazonaws.com
for i in $(seq 0 15); do
aws s3api get-object --bucket bucket --key file.bin \
--range "bytes=${start}-${end}" chunk-${i}.bin &
done
wait
aws s3 cp s3://bucket/file.bin ./output.bin --region eu-south-2 \
--cli-read-timeout 300 --expected-size 2147483648
| Method | Region | Duration | Speed | Speedup |
|---|---|---|---|---|
| Baseline (aws s3 cp) | Spain | 24.56s | 699.5 Mbps | 1.0x |
| Baseline (aws s3 cp) | Frankfurt | 23.90s | 718.8 Mbps | 1.0x |
| Transfer Acceleration | Spain | Not supported | ||
| Transfer Acceleration | Frankfurt | 24.78s | 693.3 Mbps | 0.97x |
| Tuned Multipart (64MB) | Spain | 24.71s | 695.3 Mbps | 0.99x |
| Tuned Multipart (64MB) | Frankfurt | 24.53s | 700.4 Mbps | 1.0x |
| Parallel Range GET (16 chunks) WINNER | Spain | 1.80s | 9,544 Mbps | 13.6x |
| Parallel Range GET (16 chunks) WINNER | Frankfurt | 1.84s | 9,337 Mbps | 13.0x |
| Baseline (aws s3 cp) | Stockholm | 26.69s | 643.7 Mbps | 0.9x |
| Parallel Range GET (16 chunks) WINNER | Stockholm | 1.89s | 9,090 Mbps | 12.6x |
| Pre-signed URL (curl) | Stockholm | 161.30s | 106.5 Mbps | 0.15x |
| Pre-signed Parallel (curl, 16 chunks) | Stockholm | 15.99s | 1,074 Mbps | 1.5x |
| Pre-signed URL (curl) | Spain | 136.32s | 126.0 Mbps | 0.18x |
| Pre-signed URL (curl) | Frankfurt | 131.51s | 130.6 Mbps | 0.18x |
| Pre-signed Parallel (curl, 16 chunks) | Spain | 22.85s | 751.9 Mbps | 1.05x |
| Pre-signed Parallel (curl, 16 chunks) | Frankfurt | 12.54s | 1,370 Mbps | 1.9x |
| CloudFront (single stream) | Frankfurt | 127.33s | 134.9 Mbps | 0.19x |
| CloudFront Parallel (16 chunks) | Frankfurt | 6.22s | 2,762 Mbps | 3.8x |
| Method | Throughput |
|---|---|
| Baseline | |
| Transfer Acceleration | |
| Tuned Multipart | |
| Pre-signed (curl) | |
| CloudFront (single) | |
| Pre-signed Parallel | |
| CloudFront Parallel | |
| S3 API Parallel GET |
For maximum download speed from S3 within AWS:
Use parallel byte-range GET requests (16-32 concurrent streams)
This technique works with private buckets, requires no special configuration, and scales linearly with available bandwidth.