~/nube/aws-s3 $ cat 09-cloudfront.md
- Introducción a la nube pública
- AWS-S3
CloudFront: distribuir la web que guardas en S3
Explicación conceptual de CloudFront a partir de la web de Aula Abierta, sin desplegar recursos.
De guardar una web a distribuirla
Section titled “De guardar una web a distribuirla”En la práctica integradora has trabajado con la web de las jornadas de Aula Abierta. Sus archivos, como index.html e imagen.svg, se guardan en S3. Cuando alguien abre el sitio directamente, el navegador solicita esos archivos al servicio S3 en la región del bucket.
Imagina ahora que las jornadas se anuncian a personas de distintos países y muchas consultan la misma página. Puedes colocar Amazon CloudFront delante de S3 para distribuir el contenido desde una red de servidores repartidos por el mundo. S3 sigue guardando los objetos; CloudFront recibe las peticiones de los visitantes y entrega el contenido.
Qué es una CDN
Section titled “Qué es una CDN”CDN significa Content Delivery Network, red de distribución de contenido. CloudFront es la CDN de AWS. Utiliza puntos de presencia, también llamados edge locations, para atender las peticiones desde ubicaciones de su red próximas a los visitantes en términos de conectividad.
En esos puntos puede guardar una caché: copias temporales de archivos que ya ha obtenido. Entregar una copia válida desde la caché evita consultar S3 en cada visita y puede reducir el tiempo de respuesta. No significa que toda la web se copie automáticamente a todos los puntos ni que cada petición vaya siempre más rápido. Cómo entrega contenido CloudFront.
El lugar del que CloudFront obtiene el contenido se llama origen. En nuestro ejemplo es el bucket S3, aunque CloudFront también admite otros orígenes, como servidores web. Una distribución es la configuración que relaciona la dirección de acceso de CloudFront con el origen y con las reglas para entregar y almacenar temporalmente el contenido.
Lee el esquema de izquierda a derecha: un único bucket S3 guarda los archivos de Aula Abierta; la red CloudFront tiene distintos puntos de presencia que pueden conservar copias temporales; los visitantes reciben el contenido desde el punto que atiende su petición. Las flechas muestran la entrega de contenido, no las solicitudes: cuando alguien pide un archivo, el punto consulta el origen solo si lo necesita.
Europa, América y Asia son zonas ilustrativas, no una asignación garantizada de servidores. Que un punto ya tenga imagen.svg en caché no significa que todos los demás lo tengan. Así puedes atender visitantes de distintas zonas sin crear un bucket nuevo en cada una.
| Pregunta | S3 | CloudFront |
|---|---|---|
| ¿Qué función cumple? | Guarda los objetos de la web. | Distribuye esos objetos a los visitantes. |
| ¿Qué conserva en este ejemplo? | Los archivos que publicas y sus versiones, si habilitas versionado. | Copias temporales según la configuración de caché. |
| ¿Dónde se sitúa? | El bucket pertenece a una región elegida. | La red de distribución tiene puntos de presencia por el mundo. |
| ¿Dónde actualizas el horario? | Subes el nuevo index.html a S3. |
Gestionas cuándo deja de servirse una copia anterior. |
Qué ocurre cuando alguien visita la web
Section titled “Qué ocurre cuando alguien visita la web”Sigue una petición de imagen.svg. Para comprender el recorrido, imagina un punto de presencia cuya caché está vacía y una configuración que permite guardar esa imagen.
- El navegador solicita la imagen a la dirección de CloudFront. La petición llega a un punto de presencia seleccionado por la red.
- CloudFront consulta su caché. Como no tiene una copia utilizable, necesita obtener el contenido. Esto se llama cache miss.
- CloudFront obtiene la imagen del origen S3. La entrega al navegador y puede conservarla temporalmente en caché.
- Otra petición llega al mismo punto para esa imagen. Si la copia sigue disponible y es válida, CloudFront responde desde su caché, sin consultar S3 para esa petición. Esto se llama cache hit.
El recorrido simplificado es navegador → CloudFront → S3 cuando hay que obtener el contenido del origen, y navegador → CloudFront cuando basta la copia válida. CloudFront puede utilizar niveles adicionales de caché; aquí los agrupamos para seguir el mismo archivo sin añadir componentes.
Lee el panel A siguiendo los números: solicitud del navegador, consulta al origen, devolución del objeto y respuesta al visitante. En el panel B, la petición se resuelve en dos pasos porque CloudFront dispone de una copia válida. El bucket sigue guardando el original, pero no participa en esa segunda petición.
Por qué puedes seguir viendo el horario anterior
Section titled “Por qué puedes seguir viendo el horario anterior”En la práctica integradora cambiaste la primera sesión de 10:00–11:30 a 11:00–12:30. Si añadiéramos CloudFront, sustituir index.html en S3 no retiraría automáticamente las copias anteriores de la caché.
El TTL, Time To Live, es el tiempo durante el que una copia puede considerarse fresca antes de necesitar comprobarse con el origen. Su valor depende de la configuración y de las cabeceras de la respuesta. No es un plazo de conservación del archivo en S3 ni garantiza que la copia permanezca todo ese tiempo en caché. Caducidad del contenido.
Supón, solo para este ejemplo, que el TTL efectivo es de cinco minutos, que la copia permanece en ese punto y que el navegador no conserva otra copia propia:
| Momento | Qué sucede | Qué puede ver el visitante |
|---|---|---|
| 10:00 | CloudFront obtiene index.html con el horario anterior y lo guarda en caché. |
10:00–11:30. |
| 10:01 | Subes a S3 el HTML con el horario actualizado. | La copia de CloudFront sigue teniendo el horario anterior. |
| 10:02 | Una petición llega al mismo punto y recibe la copia todavía fresca. | 10:00–11:30, aunque S3 ya contiene el cambio. |
| Desde 10:05 | Una nueva petición requiere comprobar el contenido con el origen. En este caso ha cambiado y se obtiene el HTML actualizado. | 11:00–12:30. |
Caducar no significa que CloudFront descargue todos los archivos de nuevo a una hora fija. La siguiente petición provoca la comprobación; si el contenido no ha cambiado, el origen puede confirmar que la copia sigue siendo válida.
Cuando necesitas retirar una copia antes de que caduque, puedes solicitar una invalidación de su ruta en CloudFront. Es una operación que tarda en propagarse y no vacía la caché del navegador de cada visitante. Otra estrategia para recursos como imágenes o CSS es publicar con un nombre nuevo y actualizar los enlaces que los utilizan. Cambiar el nombre de un archivo no es el versionado de S3, que conserva versiones bajo una misma clave. Actualización e invalidación de archivos.
Una web pública con el bucket privado
Section titled “Una web pública con el bucket privado”Hasta ahora has publicado la web mediante el endpoint de sitio web de S3 y una política de lectura pública acotada. Con CloudFront puedes plantear otra arquitectura: los visitantes acceden a CloudFront y el bucket permanece privado.
Para ello, el origen es el bucket S3 normal, mediante su endpoint de objetos, y se utiliza OAC, Origin Access Control o control de acceso al origen. CloudFront firma las peticiones y una política del bucket autoriza la lectura a esa distribución concreta. Puedes mantener las cuatro opciones de bloqueo de acceso público activadas y las ACL deshabilitadas. OAC no convierte el bucket en público ni autoriza automáticamente a los visitantes a leer directamente de S3.
Este diseño no utiliza el endpoint de alojamiento web de S3: ese endpoint no admite OAC. Por tanto, añadir CloudFront no consiste simplemente en pegar la dirección de la práctica de web y asumir que el bucket ya puede cerrarse. Acceso a S3 mediante OAC.
También puedes configurar HTTPS entre el navegador y CloudFront. El tramo CloudFront–S3 se configura por separado; con OAC y la opción de firmar siempre las peticiones, se utiliza HTTPS hacia S3. Cifrar una conexión protege los datos en tránsito; los permisos determinan quién puede leerlos. HTTPS para visitantes.
Sigue las flechas superiores: el visitante pide la página a CloudFront y recibe su contenido. Solo cuando necesita obtenerlo o comprobarlo, CloudFront consulta S3 mediante la petición firmada. La ruta inferior tachada representa un intento anónimo y directo al bucket: queda denegado aunque la web sea pública a través de CloudFront. No representa el acceso de administración que puedas tener con tu identidad autorizada.
Qué aporta al caso de Aula Abierta
Section titled “Qué aporta al caso de Aula Abierta”CloudFront permitiría distribuir los archivos públicos de las jornadas y evitar parte de las consultas repetidas al origen. El archivo interno de la asociación seguiría separado: no debería incorporarse al contenido público por compartir la misma cuenta. Una caché no sustituye las copias de seguridad ni el versionado que utilizaste para recuperar el documento borrado.
Tampoco es lo mismo que S3 Transfer Acceleration: aquella función busca acelerar transferencias entre un cliente y un bucket; aquí estudiamos la distribución de contenido a visitantes mediante una CDN y su caché. Transfer Acceleration.
La decisión depende de las necesidades de la web: distribución, frescura de los cambios, acceso al origen y coste. Añadir CloudFront no permite asumir que todo será más rápido o gratuito. En este bloque no creas recursos ni hay una nueva entrega; la idea que debes poder explicar es dónde están los archivos, quién responde a la visita y por qué puede aparecer una copia anterior.