Comparación de almacenamiento en la nube: 10 servicios principales | Límites de carga, precios y características | S3/GCS/Azure/R2
Al elegir un servicio de almacenamiento en la nube, los puntos de comparación clave incluyen límites de carga única, soporte de carga multiparte, nivel gratuito, precios y costos de egreso (transferencia). Aunque AWS S3 es el estándar de facto de la industria, hay opciones más adecuadas según el costo, la entrega en los bordes y los casos de uso específicos. Este artículo compara las especificaciones de 10 servicios principales y proporciona recomendaciones por caso de uso.
Tabla de comparación de límite de carga única, límite multiparte y nivel gratuito
| Servicio | Límite de objeto único | Límites de carga multiparte | Plan gratuito | Estimación mensual (100 GB) |
|---|---|---|---|---|
| AWS S3 | 5 GB | 5 TB | 5 GB • 2,000 solicitudes/mes (12 meses) | $2.30〜 |
| Google Cloud Storage | 5 TB (objeto único) | 5 TB | 5 GB (Standard, US Este) | $2.00〜 |
| Azure Blob Storage | Bloque: 4.75TB, Página: 8TB | 195GB/bloque × 50,000 bloques | 5 GB por 12 meses (LRS) | $1.84〜 |
| Cloudflare R2 | 5 GB | 5 TB | 10 GB/mes · 1 millón de operaciones/mes (perpetuo) | $1.50 (egreso gratis) |
| Backblaze B2 | 5 GB | 10 TB | 10 GB (perpetuo) | $0.60〜 |
| DigitalOcean Spaces | 5 GB | 5 TB | 250GB + 1TB transferencia/mes ($5~) | $5 (hasta 250GB incluido) |
| Wasabi | 1 TB | 1 TB | Ninguno (solo prueba) | $0.68 (egreso gratis) |
| MinIO | 5 TB (dependiente de la implementación) | 5 TB | Auto-hospedado (Ilimitado) | Solo costos de infraestructura |
| Firebase Storage | Efectivamente ilimitado (usando GCS) | Cumplimiento de GCS | 5 GB (plan Spark) | $0.026/GB〜 |
| Supabase Storage | 50MB(Free)/ 50GB(Pro) | Compatible con Pro o superior | 1GB (plan gratuito) | $0.021/GB(Pro) |
※Los precios son una estimación a partir de abril de 2026. Los precios varían según la región, la clase de almacenamiento y el uso. La mayoría de los costos de salida (transferencia de datos) no se incluyen en la tabla anterior.
Características y guía de selección de cada servicio
AWS S3
El estándar de facto para almacenamiento en la nube. Muchos servicios implementan API compatibles con S3, y el ecosistema de bibliotecas y herramientas es el más maduro. Las cargas multiparte se pueden automatizar con <code>aws-sdk</code>, permitiendo un tamaño mínimo de fragmento de 5MB y hasta 10,000 partes para cargar objetos de hasta 5TB. La integración con CloudFront facilita la entrega en los bordes. Sin embargo, los costos de egreso son altos (desde $0.09/GB), lo que puede ser un desafío para servicios con grandes transferencias de datos.
Google Cloud Storage(GCS)
Con un generoso límite de objeto único de 5TB, es muy adecuado para casos de uso donde desea gestionar archivos grandes como objetos únicos. Su fortaleza radica en la integración sin inconvenientes con servicios de GCP como BigQuery y Vertex AI, lo que lo convierte en la primera opción para construir canalizaciones de análisis de datos. Los costos de transferencia tienden a ser ligeramente más bajos que S3.
Azure Blob Storage
Se integra perfectamente con el ecosistema de Microsoft (Office 365, Active Directory, Azure Functions, etc.) y ofrece amplias características de autenticación y cumplimiento normativo para empresas. Los Blobs de Bloque admiten objetos de hasta 4.75TB, mientras que los Blobs de Página (para discos virtuales) admiten hasta 8TB. La optimización de costos es posible mediante niveles Hot, Cool y Archive.
Cloudflare R2
La característica principal es que los costos de salida son gratuitos. Como utiliza API compatible con S3, puede utilizar clientes S3 existentes casi tal cual. La integración con Workers (edge computing) es potente, permitiendo arquitecturas que manipulan directamente el almacenamiento en el edge. Ofrece un nivel gratuito permanente de 10GB/mes, lo que lo hace ideal para desarrollo personal y servicios a pequeña escala.
Backblaze B2
Ofrece precios del nivel más bajo de la industria ($0.006/GB/mes), bien adaptado para casos de uso de copia de seguridad y archivo de medios conscientes del costo. La combinación con la "Bandwidth Alliance" de Cloudflare, donde el egreso de B2 a Cloudflare es gratuito, es popular. Proporciona API compatibles con S3, lo que facilita la migración.
DigitalOcean Spaces
Se caracteriza por un plan de tarifa plana a partir de $5/mes que incluye 250 GB de almacenamiento y 1 TB de ancho de banda de transferencia. Su ventaja es la fácil predictibilidad del presupuesto para servicios pequeños. CDN viene estándar y es simple de configurar. La transferencia es gratuita cuando se usa en la misma región que DigitalOcean Droplets (máquinas virtuales).
Wasabi
Compatible con S3 con egreso gratuito (al descargar directamente desde Wasabi) y almacenamiento asequible ($0.0068/GB/mes). Sin embargo, tenga en cuenta el período mínimo de retención: los datos eliminados dentro de 90 días desde el almacenamiento incurren en cargos de 90 días. Es adecuado para copias de seguridad y almacenamiento prolongado de datos fríos.
MinIO
Almacenamiento de objetos compatible con S3 de código abierto que puede alojarse por cuenta propia en entornos locales o nubes privadas. Tiene excelente compatibilidad con Kubernetes y se proporcionan gráficos Helm oficiales. Se utiliza en industrias reguladas que prefieren no trasladar datos a la nube, así como para desarrollo y pruebas en entornos locales.
Firebase Storage
Utiliza GCS internamente, y las cargas directas desde aplicaciones móviles/web usando el SDK de Firebase se pueden implementar fácilmente. Su fortaleza es el control de acceso granular (Security Rules) integrado con Firebase Authentication. Sin embargo, en el plan Spark (gratuito), el límite de tamaño de archivo único puede estar efectivamente establecido bajo.
Supabase Storage
Funcionalidad de almacenamiento de Supabase, un BaaS (Backend as a Service) basado en PostgreSQL. Su fortaleza única es el control de acceso basado en RLS (Row Level Security) con Supabase Auth. El plan gratuito tiene un límite de tamaño de archivo bajo de 50MB, por lo que se requieren planes Pro o superiores (50GB por archivo) para archivos grandes.
Recomendaciones por caso de uso
| Caso de uso | Primera opción | Razón |
|---|---|---|
| Punto de partida para SaaS de pequeña escala | Cloudflare R2 | Egreso gratuito, nivel gratuito permanente, compatible con S3 |
| Archivo de medios de gran tamaño | Backblaze B2 + Cloudflare | Combinación de almacenamiento más barato + salida gratuita |
| Entrega perimetral, implementación global | Cloudflare R2 / AWS S3 + CloudFront | Integración de CDN y entrega de baja latencia |
| Prioridad de costo primero | Wasabi / Backblaze B2 | Precios de almacenamiento del nivel más bajo de la industria |
| Cumplimiento empresarial | AWS S3 / Azure Blob | Amplias capacidades de autenticación, cifrado y auditoría |
| Carga directa de aplicación móvil | Firebase Storage / Supabase Storage | Integración fácil de SDK y autenticación |
| On-Premises y Nube Privada | MinIO | Opciones compatibles con S3, autoalojadas y de código abierto |
| Integración con servicios GCP | Google Cloud Storage | Integración perfecta con BigQuery y Vertex AI |
Qué es la carga multiparte
La carga de múltiples partes es un mecanismo que divide archivos grandes en partes más pequeñas y los carga en paralelo. Se recomienda para archivos que superan 100MB en S3 y es obligatorio para archivos que superan 5GB. Los beneficios principales son los siguientes.
- Rendimiento mejorado con cargas paralelas
- Solo las partes fallidas se pueden retransmitir durante una interrupción de red (reanudable)
- Eludir el límite de 5GB de solicitudes únicas y enviar hasta 5TB
// AWS SDK v3 でのマルチパートアップロード例
import { S3Client, CreateMultipartUploadCommand,
UploadPartCommand, CompleteMultipartUploadCommand } from '@aws-sdk/client-s3';
const s3 = new S3Client({ region: 'ap-northeast-1' });
async function multipartUpload(bucket, key, file) {
// アップロードの開始
const { UploadId } = await s3.send(new CreateMultipartUploadCommand({
Bucket: bucket, Key: key,
}));
const chunkSize = 10 * 1024 * 1024; // 10MB
const parts = [];
for (let i = 0; i * chunkSize < file.size; i++) {
const chunk = file.slice(i * chunkSize, (i + 1) * chunkSize);
const { ETag } = await s3.send(new UploadPartCommand({
Bucket: bucket, Key: key,
UploadId, PartNumber: i + 1,
Body: chunk,
}));
parts.push({ ETag, PartNumber: i + 1 });
}
// パーツの結合(完了)
await s3.send(new CompleteMultipartUploadCommand({
Bucket: bucket, Key: key,
UploadId, MultipartUpload: { Parts: parts },
}));
}
Archivos de prueba para este artículo (gratis)
- → <a href="/ja/files/threshold/" class="text-primary-600 dark:text-primary-400 hover:underline">Lista de archivos de prueba de valores límite</a> — Prueba cargas cerca de los límites de varios servicios de almacenamiento en la nube
- → <a href="/ja/files/images/png/" class="text-primary-600 dark:text-primary-400 hover:underline">Lista de Imágenes de Prueba PNG</a> — Verificar el comportamiento del almacenamiento con imágenes de varios tamaños
Artículos relacionados
- → <a href="/ja/blog/s3-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">Resumen de Límites de Carga de Archivos para AWS S3 y CloudFront</a>
- → <a href="/ja/blog/how-to-test-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">Cómo Probar Correctamente los Límites de Carga de Archivos</a>
- → <a href="/ja/blog/mb-vs-mib-file-size/" class="text-primary-600 dark:text-primary-400 hover:underline">Diferencia Entre MB y MiB | Comprensión Correcta de las Unidades de Tamaño de Archivo</a>