Loading...
Storage compatible con S3

Object Storage

cdn.com.tr Object Storage es un servicio de buckets compatible con S3 donde guardas medios, assets estaticos, y backups fuera de tu runtime de aplicacion. Creas buckets, generas pares de access key y secret key, y pones el contenido delante del CDN edge para que las descargas sean rapidas y la carga del origin se mantenga baja. Las herramientas y SDKs estandar de S3 funcionan sin cambios contra el endpoint.

Object Storage

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

1

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.

2

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.

3

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.

4

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.

5

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.

6

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

Catalogo de medios detras del CDN

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.

Subidas compartidas entre replicas

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.

Backups nocturnos de base de 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.

Migrar una app existente de S3

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.