Migrar Supabase Storage a S3 sin romper imágenes, permisos ni URLs
Publicado el 2026-11-14 por frfrand
Plan práctico para migrar archivos desde Supabase Storage a S3 con inventario, claves, políticas, URLs, validación y reversión.

Mover los archivos de Supabase Storage a un servicio compatible con S3 es más que copiar objetos. Si tu aplicación depende de URLs públicas, enlaces firmados, permisos por usuario o metadatos de buckets, un cambio apresurado puede dejar imágenes rotas y archivos privados accesibles.
1. Antes de copiar, inventaría el uso real
Documenta cada bucket, su visibilidad, nombres de objetos, cantidad de archivos, tamaño total y formatos. Busca dónde se guardan las rutas: columnas SQL, respuestas de API, plantillas de email y caches. Anota qué archivos se descargan con URLs firmadas, qué usuarios pueden subirlos y qué flujos necesitan borrar o reemplazar objetos.
2. Mapea la seguridad de Supabase a S3
En Supabase Storage, las reglas pueden apoyarse en las políticas de autorización del proyecto. En S3 tendrás que definir permisos de bucket, políticas IAM, validación en la API y eventualmente URLs prefirmadas. No copies simplemente los permisos públicos: revisa los casos de autenticación y separación entre organizaciones.
| Elemento | Antes | Después |
|---|---|---|
| Bucket | Público o privado | Política explícita del proveedor S3 |
| Ruta | Clave de objeto Supabase | Clave de objeto S3 |
| URL | Dominio y API de Supabase | Dominio S3/CDN/proxy |
| Acceso temporal | Signed URL | URL prefirmada con caducidad |
| Auditoría | Logs de Supabase | Registros del proveedor y aplicación |
3. Diseña las claves y la estrategia de URL
Evita usar URLs absolutas como identificadores permanentes en la base. Mejor guarda una clave estable, por ejemplo tenant_42/avatar/abc.webp, y genera la URL desde la API según el proveedor activo. Si ya guardaste URLs completas, prepara un mapeo de reemplazo y una compatibilidad temporal mediante redirecciones o proxy, respetando la privacidad.
4. Copia y verifica
Utiliza una herramienta o script que pueda listar objetos del origen de manera autorizada y subirlos al destino conservando MIME, tamaño, metadatos necesarios y nombres válidos. No presupongas que el ETag es siempre un hash MD5: las cargas multiparte y configuraciones del proveedor pueden producir valores distintos.
Verifica conteo de objetos, bytes totales, hashes calculados al descargar muestras o el conjunto completo cuando sea viable, y accesibilidad. Comprueba archivos con espacios, caracteres especiales y rutas profundas. Define un informe de excepciones por cada objeto fallido.
5. Evita la pérdida de escrituras durante el cambio
Opciones: parar temporalmente subidas, habilitar doble escritura con reconciliación o mantener un periodo de sincronización incremental. Elige según el volumen y tolerancia al downtime. No cambies las lecturas hasta validar las nuevas URLs con una versión de prueba del frontend.
Tras el cambio, monitoriza 403, 404, tamaño de respuesta y tasa de errores de carga. Mantén un plan para volver al origen durante el periodo de transición.
6. No olvides costes y retención
Incluye almacenamiento, solicitudes PUT/GET, salida de red, CDN, backups, soporte y posible facturación por transferencia entre regiones. Confirma cifrado y retención con tu proveedor; S3 compatible no significa que todos implementen exactamente las mismas características.
Consulta migrar datos y servicios desde Lovable Cloud, qué es Supabase y los servicios de ArduMaker.
Preguntas frecuentes
### ¿Puedo copiar archivos sin tocar mi frontend? Solo si mantienes una capa de compatibilidad para URLs y permisos.
¿S3 tiene las mismas políticas que Supabase?
No. Debes reproducir las reglas relevantes con políticas y lógica de backend.
¿Es seguro eliminar el bucket original enseguida?
No antes de validar la migración, expiración de enlaces, copias y reversión.
Referencias: Supabase Storage y Amazon S3.