Por que sacar los archivos del disco de la aplicacion
Los contenedores de aplicacion deberian ser sin estado para poder redesplegarse, escalarse, y hacer rollback sin perder las subidas de usuarios. Cuando avatares, fotos de producto, facturas, y video se escriben en el filesystem del contenedor, cada reinicio arriesga perdida de datos y cada replica tiene un conjunto distinto de archivos. Object Storage resuelve esto dandole a todas las replicas un lugar compartido, duradero, para leer y escribir. Tu app se mantiene desechable mientras los datos viven de forma independiente.
Genuinamente compatible con S3, no una imitacion
El servicio habla la API de S3, asi que las herramientas que ya usas siguen funcionando: el aws-cli, boto3, el AWS SDK for JavaScript, los drivers de filesystem S3 de Laravel y Symfony, rclone, y s3cmd hablan todos con el una vez que defines la URL de endpoint y el par de claves. Las subidas multipart para archivos grandes, los metadatos de objeto, y el manejo de content-type se comportan como los desarrolladores de S3 esperan. Eso significa que migrar una app que ya usa S3 suele ser un cambio de configuracion en lugar de una reescritura de codigo.
Buckets, access keys, y radio de impacto
Organizas los datos en buckets y controlas el acceso con pares de access key ID y secret key que puedes rotar o revocar en cualquier momento. Mantener una clave por app o por bucket limita el radio de impacto: si una clave se filtra en un log o un bundle de cliente, revocas ese par y lo vuelves a acuñar sin tocar ningun otro servicio. El panel lista que claves existen para que puedas auditar y retirar las que ya no se usan.
Storage y CDN trabajando como uno solo
Como Object Storage y el CDN edge son la misma plataforma, puedes servir objetos del bucket a traves de cache sin conectar un origin separado. Un bucket publico o una ruta edge firmada se convierte en un camino de descarga rapido donde los archivos populares se cachean cerca de los usuarios y nunca golpean el storage repetidamente. Cuando reemplazas un archivo bajo una clave existente, un purge dirigido desde el panel o cdnctl refresca el edge para que nadie reciba una copia desactualizada.
Conectar storage a container apps
En lugar de pegar credenciales en tu Dockerfile o comitearlas a un repositorio, conectas un bucket a una Container App y la plataforma entrega el endpoint y las claves como variables de entorno, opcionalmente bajo un prefijo para que multiples buckets se mantengan distintos. Tu codigo lee nombres de env estandar en tiempo de ejecucion, los secrets nunca aparecen en la imagen, y rotar una clave actualiza la conexion en lugar de forzar un rebuild. Esto mantiene intacta la separacion twelve-factor entre configuracion y codigo.
Backups y datos frios
Object Storage es un hogar natural para dumps de base de datos, backups de aplicacion, y exportaciones de archivo que quieres fuera del servidor principal pero aun poder restaurar rapido. Como el acceso es por clave y con alcance limitado, un job de backup puede tener una clave de flujo de trabajo de solo escritura separada de las claves que usa tu app en vivo. Scripteado a traves de cdnctl en un job nocturno, las subidas y las limpiezas de retencion corren desatendidas, y mantienes un limite de uso en el bucket para que los archivos no crezcan sin que nadie lo note.
Como configurarlo, paso a paso
Crea un bucket
En el panel abre Object Storage y elige Create Bucket. Dale un nombre seguro para DNS (letras minusculas, numeros, y guiones) y decide si los objetos deben ser privados por defecto o de lectura publica. Privado es la eleccion correcta para backups y originales que firmaras o proxearas; lectura publica encaja con assets que planeas servir directamente a traves del CDN.
Genera un par de access keys
Abre la pestaña Access Keys y genera una clave. Obtienes un access key ID y una secret key; la secret se muestra solo una vez, asi que copiala de inmediato a tu gestor de secrets. Limita la clave al bucket que necesita en lugar de reutilizar una clave maestra en todos los proyectos, para que una fuga pueda contenerse revocando un solo par.
Apunta un cliente S3 al endpoint
Configura cualquier SDK de S3 o el aws-cli con la URL de endpoint de cdn.com.tr mostrada en la pagina del bucket, direccionamiento path-style, y tu par de claves. Por ejemplo: aws --endpoint-url <endpoint> s3 cp ./poster.jpg s3://my-media/posters/. No se requiere un cliente a medida porque la API habla el protocolo S3.
Conecta el bucket a una container app
En una Container App elige Bind Object Storage y selecciona el bucket. La plataforma inyecta el endpoint, la region, el access key, y el secret como variables de entorno (con un prefijo opcional como ASSETS_) para que tu codigo los lea del entorno en lugar de hardcodear credenciales en la imagen o el repositorio.
Ponlo detras del CDN
Conecta un dominio o usa la ruta edge del bucket para que los objetos se sirvan desde cache en ubicaciones edge. Define headers de cache al subir, y usa purge desde el panel o cdnctl cuando sobrescribas un archivo bajo la misma clave para que los espectadores reciban la nueva version.
Define limites y automatiza con cdnctl
Aplica un limite de uso en el bucket para protegerte de un crecimiento descontrolado, y scriptea tareas rutinarias con cdnctl para que las subidas de backup y las limpiezas se ejecuten desde CI sin abrir el panel. Rota claves periodicamente desde la misma pestaña de Access Keys.
Escenarios de ejemplo
Un sitio de e-commerce almacena cada imagen de producto y subida original en un bucket, sirve las derivadas a traves del CDN, y mantiene los contenedores de app sin estado para que los deploys nunca toquen los archivos de usuario.
Una container app escalada a varias replicas escribe las subidas de usuario en un bucket, asi que cada instancia lee los mismos archivos y un reinicio o evento de escalado nunca pierde datos.
Un job de cron o CI usa una clave con alcance limitado y cdnctl para subir dumps de base de datos comprimidos a un bucket privado cada noche, con un limite de uso y limpieza de retencion manteniendo el costo predecible.
Un equipo que ya usa AWS S3 reapunta el endpoint y las claves de su SDK a cdn.com.tr, usa rclone para copiar los objetos, y lanza sin reescribir el codigo de storage.
Preguntas frecuentes
Que herramientas y SDKs de S3 realmente funcionan contra el?
Los comunes: aws-cli, boto3, el AWS SDK for JavaScript, rclone, s3cmd, y los drivers de filesystem S3 en Laravel y Symfony. Define la URL de endpoint desde la pagina del bucket, usa direccionamiento path-style, y proporciona tu access key y secret. Las subidas multipart para objetos grandes son compatibles.
Puedo servir archivos del bucket directamente al publico a traves del CDN?
Si. Haz que el bucket o el objeto sean de lectura publica, o usa la ruta edge del bucket, y conecta un dominio. Los objetos entonces se cachean en ubicaciones edge para que las descargas repetidas se sirvan desde cache en lugar de golpear el storage cada vez.
Que pasa cuando sobrescribo un archivo bajo la misma clave?
El storage toma el objeto nuevo de inmediato, pero el edge puede seguir reteniendo la version anterior hasta que su cache expire. Ejecuta un purge para esa ruta desde el panel o con cdnctl justo despues de la subida para que los espectadores reciban el archivo nuevo.
Si un access key se filtra, que hago?
Revoca ese par de claves desde la pestaña Access Keys y genera uno nuevo. Como deberias limitar el alcance de las claves por bucket o por app, revocar un par no interrumpe tus otros servicios. Actualiza la conexion o tu almacen de secrets con el nuevo secret.
Tengo que hardcodear credenciales en mi imagen de contenedor?
No, y no deberias. Conecta el bucket a la Container App y el endpoint, la region, el access key, y el secret llegan como variables de entorno, opcionalmente bajo un prefijo. Tu codigo los lee en tiempo de ejecucion, asi que los secrets se mantienen fuera de la imagen y del repositorio.
Como evito que el storage crezca sin limite?
Define un limite de uso en el bucket para que no se dispare sin ser notado, y para buckets de backup scriptea una limpieza de retencion con cdnctl para que los dumps viejos se poden en un horario. El panel muestra el uso actual por bucket para que puedas rastrearlo.