AWS S3 vs Cloudflare R2: La guerra del almacenamiento cloud
Comparativa técnica y de costos entre AWS S3 y Cloudflare R2 para elegir la solución de almacenamiento de objetos más adecuada para tu proyecto.
El monopolio del almacenamiento cloud se resquebraja
Durante más de una década, Amazon S3 fue la solución de almacenamiento de objetos indiscutible. Lanzado en 2006, S3 definió el estándar de la industria y se convirtió en la columna vertebral del internet moderno. Millones de aplicaciones almacenan imágenes, videos, backups, datasets y activos estáticos en S3. Sin embargo, en 2022 Cloudflare lanzó R2, una alternativa con una propuesta de valor que ataca el talón de Aquiles de S3: los costos de egress.
El problema del egress en AWS S3
El egress —la transferencia de datos desde S3 hacia Internet o hacia otras regiones de AWS— es donde Amazon genera una parte sustancial de sus ingresos cloud. Las tarifas de egress de S3 en 2026 siguen siendo:
- Primeros 10 TB/mes: $0.09 por GB
- Siguientes 40 TB/mes: $0.085 por GB
- Más de 150 TB/mes: $0.07 por GB
Para una aplicación que sirve 100 TB de datos multimedia mensualmente, esto representa aproximadamente $8.500 solo en egress, sin contar el costo de almacenamiento ($0.023/GB/mes) ni las operaciones API ($0.0004 por 1.000 GET requests).
Este costo de egress actúa como un lock-in efectivo: mover datos fuera de AWS es tan caro que muchas empresas se quedan aunque encuentren alternativas más económicas.
R2: La propuesta disruptiva de Cloudflare
Cloudflare R2 fue diseñado específicamente para eliminar el egress como barrera. Su modelo de precios es radicalmente diferente:
- Egress hacia Internet: $0.00 (gratuito)
- Almacenamiento: $0.015/GB/mes (35% más barato que S3)
- Operaciones de clase A (PUT, POST): $4.50 por millón
- Operaciones de clase B (GET): $0.36 por millón
- Capa gratuita: 10 GB almacenamiento, 1 millón Clase A, 10 millones Clase B por mes
El egress gratuito es un cambio de juego para aplicaciones que sirven mucho contenido. Esos $8.500 mensuales de egress en S3 serían $0 en R2.
Compatibilidad con la API de S3
R2 implementa la API de S3 al completo, lo que significa que la migración es técnicamente sencilla. Solo necesitas cambiar el endpoint y las credenciales:
// AWS S3
const s3 = new S3Client({
region: 'us-east-1',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
}
})// Cloudflare R2 (mismo SDK de AWS) const r2 = new S3Client({ region: 'auto', endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`, credentials: { accessKeyId: process.env.R2_ACCESS_KEY_ID, secretAccessKey: process.env.R2_SECRET_ACCESS_KEY } }) ```
Las operaciones `PutObject`, `GetObject`, `DeleteObject`, `ListObjectsV2` y `CreateMultipartUpload` funcionan igual. La mayoría de aplicaciones pueden migrar en horas sin cambiar la lógica de negocio.
Diferencias técnicas que importan
A pesar de la compatibilidad de API, existen diferencias importantes a considerar:
Consistencia de datos: S3 ofrece consistencia fuerte (strong consistency) desde 2020, garantizando que inmediatamente después de escribir un objeto, cualquier lectura verá la versión más reciente. R2 también garantiza consistencia fuerte en la región donde se almacena el objeto.
Clases de almacenamiento: S3 ofrece múltiples clases (Standard, Intelligent-Tiering, Glacier, Deep Archive) para optimizar costos según la frecuencia de acceso. R2 actualmente solo tiene una clase de almacenamiento, aunque Cloudflare ha anunciado planes para añadir almacenamiento en frío.
Regiones y cumplimiento: S3 tiene presencia en 33 regiones globales con zonas de disponibilidad múltiples en cada una. R2 almacena los datos en múltiples ubicaciones automáticamente pero con menos control granular sobre la región exacta. Para datos sujetos a GDPR o requisitos de soberanía de datos específicos, S3 sigue siendo más flexible.
Lifecycle policies: S3 tiene políticas de ciclo de vida maduras y bien documentadas para mover objetos entre clases o eliminarlos automáticamente. R2 las implementó en 2025 pero aún es menos flexible.
Event notifications: S3 puede notificar a Lambda, SQS o SNS cuando se crea o elimina un objeto. R2 tiene integración con Workers para disparar funciones en respuesta a eventos de almacenamiento.
Rendimiento: ¿cuál es más rápido?
El rendimiento depende enormemente de la ubicación del cliente y del servidor de origen. S3 tiene ventaja en regiones donde tiene centros de datos dedicados con infraestructura altamente optimizada. R2 tiene ventaja cuando los datos se sirven a través de la CDN de Cloudflare, ya que los archivos se cachean automáticamente en los puntos de presencia globales.
En benchmarks prácticos, ambos servicios ofrecen latencias similares para GET de objetos pequeños (bajo 100ms desde regiones bien conectadas). Para uploads de objetos grandes, S3 con multipart upload sigue siendo marginalmente más rápido debido a su infraestructura más madura.
¿Cuándo elegir cada uno?
Elige R2 cuando: tu aplicación sirve muchos datos a usuarios finales (alto egress), ya usas Cloudflare para CDN o Workers, buscas simplicidad operativa y el ahorro en egress supera las funcionalidades adicionales de S3.
Elige S3 cuando: necesitas múltiples clases de almacenamiento para optimizar costos de datos fríos, requieres integraciones nativas con el ecosistema AWS (Lambda, CloudFront, etc.), tienes requisitos estrictos de cumplimiento con regiones específicas, o ya tienes arquitectura AWS consolidada.
Conclusión: Para startups y proyectos nuevos con alto volumen de contenido multimedia, R2 es frecuentemente la opción más económica y suficientemente capaz. Para empresas con arquitectura AWS consolidada o necesidades avanzadas de ciclo de vida de datos, S3 sigue siendo la opción más completa.
Recibe el mejor contenido tech cada mañana
Gratis · Sin spam · Cancela cuando quieras