Como continuación al primer post en el que hablaba de Hugo, el framework usado para la creación de esta web, me gustaría seguir comentando otra de las tecnologías en las que se apoya. En esta ocasión es el turno del servicio Amazon Simple Storage Service (S3) que pertenece a la plataforma de servicios en la nube Amazon Web Services (AWS).
Amazon S3 es un servicio de pago para almacenamiento en la nube al estilo de Dropbox, Google Drive o Microsoft OneDrive. Además de almacenar ficheros y directorios, permite alojar websites de contenido estático, es decir, webs que se basan en HyperText Markup Language (HTML), JavaScript (JS) y Cascading Style Sheets (CSS). El contenido no es generado dinámicamente en cada solicitud que se realiza al servidor y, por tanto, no son necesarios ni servidores de aplicaciones ni de bases de datos. Sólo se requiere un servidor web que sirva el contenido según se le vaya solicitando. Afortunadamente, gracias a tecnologías que se ejecutan en el lado del cliente como JS y CSS, se puede conseguir cierto dinamismo en cómo se muestra el contenido aunque éste sea servido de forma estática.
A continuación se describen los 2 pasos que hay que realizar para poder publicar una web estática: (1) alojar el website y (2) asociar un dominio.
Alojar un website estático en Amazon S3
La capacidad de alojamiento de webs estáticas de Amazon S3 está explicada en detalle aquí pero, en resumen, nos permite lo siguiente:
- Crear un contenedor o depósito denominado Bucket que está físicamente en una región o CPD de Amazon. Los Buckets tienen que tener un nombre único en una región y ese nombre debe coincidir con el dominio DNS que pretandamos registrar posteriormente.
- Almacenar los ficheros HTML y demás recursos webs asociados en dicho Bucket.
- Publicar el Bucket a través de un Endpoint. Un Endpoint apunta a un Bucket concreto que se encuentra en una región en particular. En mi caso es www.alejandrolopezparra.es.s3-website-eu-west-1.amazonaws.com
- Configurar cuál es la página index (página que se cargará por defecto) y la que se muestra en caso de error.
- Activar los ficheros de logs para registrar los accesos que se produzcan al servidor. Más información sobre esto en el post dedicado a los logs de Amazon S3.
También contamos con un asistente o guía rápida que nos facilita el proceso de alojamiento de un nuevo website.
Asociar un dominio propio
Una vez tenemos nuestro website alojado en un Bucket y lo hemos publicado en un Endpoint, es el momento de asociarle un nombre de un dominio propio, por ejemplo www.alejandrolopezparra.es.
Para lograrlo es necesario registrar el dominio en un registrador de dominios y crear un nombre en ese dominio a través de un servicio DNS que apunte al Endpoint definido anteriormente mediante lo que se conoce como alias. De esta forma, cuando un navegador web intente resolver dicho nombre, recibirá como respuesta el endpoint donde tenemos alojado nuestro website. Lo habitual es crear un alias para el subdominio www
aunque en algunos proveedores DNS también es posible crear un alias para el dominio raíz. Es muy importante tener en cuenta que cada alias tiene que apuntar a un Endpoint concreto y el nombre del alias debe coincidir con el nombre del Endpoint.
Existen multitud de registradores de dominios y muchos de ellos también proporcionan servicios DNS. Amazon ofrece estos servicios a través de Amazon Route 53 y dispone de una guía en la que explican cómo llevarlo a cabo. Otro prestador muy conocido de este tipo de servicios es Dyn. En mi caso, uso GoDaddy para ambas cosas aunque tiene la pega de no permitir alias del dominio raíz por lo que sólo se pueden usar en los subdominios.
Conclusiones
Amazon S3 permite el alojamiento de websites estáticos de forma fácil y con precios económicos, especialmente el primer año que es gratuito. A partir de ahí, el modelo de negocio se basa en pago por uso de almacenamiento y trasferencia de datos (tanto de subida como de descarga). Para webs personales o con poco tráfico es idóneo porque la factura es muy baja si no hay muchas visitas. Incluso te permite definir alertas cuando el sistema prevee que se pueden superar ciertos umbrales.
Existen otras alternativas que merecerían la pena explorar para valorar la que mejor se adapta a las necesidades de cada uno:
- Google Cloud Storage con su guía. De pago.
- Github Pages que dispone de un tutorial para Hugo. Gratuito.
- BitBucket que también tiene un tutorial para Hugo. Gratuito.
- GitLab que también ofrece un tutorial para Hugo. Gratuito.