Alojamiento de una página web estática en AWS

Guía sobre cómo estoy alojando esta página web en AWS con S3 y Cloudfront con coste mínimo

Planificación y diseño

Necesidades:

Una de las opciones más populares a la hora de alojar páginas web es a través de una compañía que facilite el dominio y un gestor de contenidos. Esta opción no me convencía ya que requiere de suscripciones mensuales y me limita al gestor de contenidos porporcionado por la empresa.

Otra opción podría ser alojar la página web en un servidor web como NGINX, pero al final decidí que tampoco era buena solución, ya que requiere o de una máquina virtual en la nube activa 24h al día o un servicio en un servidor. Estas opciones, aunque efectivas, me parecen que disparan los costes del proyecto y complican mucho su mantenimiento y gestión.

Teniendo en cuenta las necesidades del proyecto, creo que la solución que ofrece el mejor compromiso entre coste, simplicidad y funciones es alojar la página web en AWS. La proveedora de cloud nos ofrece la posibilidad de almacenamiento redundante con S3 y una manera de servirlo de manera segura y con certificado con CloudFront.

Almacenamiento de archivos con S3

S3 es el medio por el cual AWS proporciona almacenamiento en la nube. Amazon ya ofrece una manera de servir una página web directamente desde aquí, pero nosotros no lo configuraremos aquí ya que la propia amazon aconseja contra ello.

Creamos un nuevo bucket S3 seleccionando todas las opciones por defecto

Acceso público de manera segura y fiable

Para que el contenido sea accesible públicamente, necesitamos configurar CloudFront para servirlo de forma segura y fiable. Empezamos creando un nuevo distribuidor CloudFront.

Elegimos el plan gratis, lo enlazamos con nuestro dominio (AWS te dará las instrucciones de qué entradas crear), seleccionamos nuestro S3 bucket con origen, AWS también creará el certificado por nosotros.

Verificamos que AWS haya creado automaticamente los permisos necesarios en el bucket, y si no, los creamos manualmente siguiendo las instrucciones que nos proporcionan. También asignamos el default root object a https://akerra.net para que el nombre de dominio diriga automaticamente ahí.

Y ahora creamos una función de CloudFront y la vinculamos con la distribución

async function handler(event) {
var request = event.request;
var uri = request.uri;

// Check whether the URI is missing a file name.
if (uri.endsWith('/')) {
request.uri += 'https://akerra.net';
}
// Check whether the URI is missing a file extension.
else if (!uri.includes('.')) {
request.uri += '/https://akerra.net';
}

return request;
}

Conclusión

Si estás siendo capaz de ver esto es que has configurado correctamente tu sitio web en AWS. Esta solución ofrece una manera de alojar páginas web de forma segura, fiable y económica, sin necesidad de mantener un servidor físico.