AWS Cloudfront – CDN y HTTPS para una web estática en S3

Buenas a todos, en este artículo mostramos cómo crear una red de distribución de contenidos para un sitio web estático alojado en Amazon S3 utilizando AWS Cloudfront. Esta laboratorio parte de la práctica realizada por mi compañero Evaristo Rivieccio.

¿Qué es AWS Cloudfront?

Amazon CloudFront es un servicio de red de entrega de contenido (CDN) para la distribución global de datos, videos, aplicaciones y API de forma segura, con baja latencia, altas velocidades de transferencia y dentro de un entorno práctico para los desarrolladores. CloudFront se integra con AWS tanto mediante ubicaciones físicas conectadas directamente con la infraestructura global de AWS (edge locations), como con otros servicios de AWS. 

Consiste en guardar copias cacheadas de los objetos de un origen en localizaciones más cercanas a los usuarios, con el objetivo de proporcionar una menos latencia a los mismos a la hora de acceder a los objetos.

Infraestructura de Amazon CloudFront

Orígenes de Cloudfront

Una distribución de cloudfront es un conjunto de configuraciones que permiten servir objetos de un origen en localizaciones cercanas al usuario, llamadas edge locations. Una distribución de CloudFront puede tener varios tipos de orígenes, siendo el más común AWS S3.

Edge locations

Son nodos de la CDN ubicados en el borde de la infraestructura de Amazon, y colocados estratégicamente para poder distribuir contenido a los usuarios finales con una latencia menor. Amazon CloudFront utiliza una red global conformada por 200 puntos de presencia (189 ubicaciones de borde y 11 cachés de borde regionales) en 77 ciudades de 37 países.

Manos a la obra…

Recapitulando, en este artículo pretendemos pasar de esto:

A esto:

Comentar que esta práctica es extremadamente simple en comparación con lo que puede llegar a afinarse la creación de la distribución y el servicio Cloudfront en general. A continuación se muestra el certificado en ACM que utilizaremos para la capa https de la distribución que vamos a crear.

Creando un registro de tipo CNAME en Route53 para validar el certificado cuando lo creamos:

Accedemos al panel de Cloudfront y procedemos a crear una distribución:

Comenzamos la creación:

Elegimos en primer lugar el origen de la distribución:

Vemos que podemos introducir también load balancers, ya que estos pueden estar apuntando a varios buckets S3 y balanceando la carga entre ellos.

Establecemos que las peticiones http se redirijan a https:

Elegimos el certificado que hemos creado:

Indicamos el documento root de la web:

Al crear la distribución, debemos esperar unos minutos a que se despliegue. Deben cachearse los objetos de S3 y propagarse a las distintas edge locations.

Tras unos minutos, ya estaría desplegado:

Podemos ver un resumen con las características de la distribución:

A continuación vemos el origen que hemos establecido:

Creación del registro en Route53

Accedemos al panel de Route53:

Creamos un nuevo registro:

De tipo A y elegimos como target del Alias el endpoint de la distribución de Cloudfront:

Una vez hecho esto, ya podemos acceder a nuestra web a través de Cloudfront y con la seguridad HTTPS correspondiente:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *