Amazon Web Services (AWS en adelante) contiene un catálogo de productos en el cloud para almacenamiento, bases de datos, análisis, aplicaciones etc. que permiten adaptarse a una amplia variedad de cargas de trabajo, ya sea enfocado a aplicaciones web y móviles, el almacenamiento y el procesamiento de datos, el almacenamiento en general, el archivado y muchas otras.

Además, para fomentar el uso de sus servicios, te ofrecen la «capa de uso gratuito» durante un año, que tiene acceso a la mayoría de sus tecnologías, pero con restricciones en cuanto a la cuota de uso, generalmente.

Sin intención de ofrecer una descripción exhaustiva de las tecnologías más destacadas (para eso está la web de AWS), es importante citar 3 elementos que ofrecen:

  • Amazon EC2: Proporciona espacio en el cloud para lanzar instancias, con facilidades para su escalabilidad. (Aquí es, básicamente, donde vamos a tener acceso a una máquina para configurarla como servidor: instalar un SO, apache, servidor de aplicaciones, etc)
  • Amazon S3: Es un servidor de archivos estáticos de alta velocidad de transferencia, gran escalabilidad, etc
  • Amazon RDS: Nos permite configurar y gestionar bases de datos en el cloud, siempre con comodidades para su escalabilidad.
  • Amazon ElasticCache: Te permitirá tener una caché dedicada en el cloud.
Como podemos ver, AWS está pensado para ofrecer todos los servicios que pueda necesitar una herramienta profesional en el cloud, permitiendo con facilidad separar en distintas máquinas cada una optimizada para su uso, el servidor de aplicaciones, el servidor de contenido, la base de datos y la caché, además de proporcionar herramientas de escalabilidad por si tienes más éxito del que esperabas.

ALTA

Una vez estamos en la web de AWS (http://aws.amazon.com/), seleccionamos la opción «Comience de forma gratuita».
 Seleccionamos la opción «I’m a new user», introducimos nuestro e-mail y le damos a continuar.
Acabamos de rellenar el formulario que nos aparece (confirmación de e-mail, nombre, contraseña, nombre completo y dirección, captcha, y aceptamos la casilla de condiciones de uso).
Aunque disponemos de 1 año gratuito, tendremos que introducir los datos de facturación por si contratáramos servicios adicionales.
A continuación nos solicitarán nuestro número de teléfono, al que nos llamará un sistema automático pidiéndonos introducir la clave que nos aparece en pantalla. Una vez lo hacemos, nos permite continuar, por lo que pasaremos a la última página del proceso de registro, donde nos pedirá si queremos el plan básico, o queremos pagar por otros servicios. BASICO. FINALIZAR.
La pantalla siguiente nos debería confirmar el registro, y darnos acceso al panel de control AWS a través de un enlace:
> Lanzar AWS Management Console 


PRIMER ACCESO A AWS

Desde http://aws.amazon.com/es/console/, nos pedirá «Iniciar sesión en la consola», para lo que deberemos usar las credenciales que hemos creado anteriormente.
Nos debería aparecer una pantalla con una barra superior que contiene los iconos de EC2, S3 y Route53 (para manejar tus dominios), y el resto de la pantalla poblado de los distintos servicios de AWS. Si queremos añadir alguno (sin coste), solo tenemos que darle a la opción «Editar» de la barra superior, y arrastrar allí los iconos deseados.
Yo lo he hecho con ElasticCache y RDS.
Para entrar a los servicios, EC2 por ejemplo, necesitaremos antes validar el link que habremos recibido en nuestro e-mail, para confirmar el alta de usuario.
Hecho esto, se nos pedirá gestionar nuestras credenciales de seguridad, de momento pasamos del tema, dado que ya tenemos una contraseña creada.
Un pequeño detalle a tener en cuenta es que en la barra superior, lado derecho de la pantalla, puedes elegir el centro (geográfico) de trabajo. Esto es importante por que solo veremos información que perteneca al mismo centro. Es decir, si estamos en el de la UE (Ireland), no veremos ninguna instancia que se haya creado en US Weast, por ejemplo.

LANZAR UNA INSTANCIA EC2

Desde el panel de consola seleccionamos EC2 -> Launch an instance
Nos pedirá qué S.O. queremos instalar en nuestra máquina (ojo, hay algunos que tienen un coste adicional). Se puede optar por instalar directamente una de las imágenes que te ofrecen (o de las que tu tienes, si tienes creada alguna) ya preparadas con varias herramientas, pero también puedes instalar un S.O. desde cero, seleccionando AWS Marketplace. Es lo que haremos nosotros.
Dentro de AWS Marketplace, seleccionamos «Operative Systems», y en mi caso opto por un Debian de 64 bits, que no tiene ningún cargo adicional. Si, salen los precios pero, tranquilos, eso es para cuando pase nuestro año gratuito, o si usáramos más cuota de la que nos ofrecen gratuitamente.
Cuando nos pregunten el tipo de instancia, seleccionamos microinstancia, que es la gratuita.
A continuación piden una serie de datos de configuración que podemos dejar tal cual, o cambiar en función de nuestras necesidades. A destacar el «Shutdown behaviour», con el que le decimos cómo actuar cuando la intancia recibe una señal de apagado (entiendo que las opciones terminate/stop difieren en que la primera no sólo para la instancia, si no que además la elimina, por lo que tendríamos que volver a crearla a partir de una imagen de seguridad o de cero si no tuviéramos).
La siguiente opción es la de añadir almacenamiento. Las instancias se guardan en dispositivos de almacenamiento. Aquí cabe destacar el campo «Delete on termination» que va ligado a lo que comentábamos antes. Si se termina la instancia pero no se elimina el espacio de almacenamiento, aún podríamos recuperar todo el sistema con una nueva instancia conectada a dicho almacenamiento.
La siguiente opción, tag, nos permite etiquetar la instancia para que facilitar identificarla en caso de tener muchas.
El siguiente paso «grupos de seguridad» es interesante: Nos permite limitar el acceso a los distintos servicios del servidor a ciertos rangos de IPs.
Aquí tiene sentido, por ejemplo, configurar HTTP para cualquier fuente, y SSH solo para la IP de tu máquina, para evitar que pueda entrar nadie más.
Finalmente lanzamos la instancia y nos sale una ventana solicitando la opción de crear un par clave pública/privada. Esto nos será muy util para acceder posteriomente por SSH, por lo que seleccionamos «create a new key par», le damos un nombre (miClave, por ejemplo) y nos la descargamos para continuar con la creación de la instancia.
Tras unos segundos, nos debería aparecer un mensaje diciendo que la instancia se ha creado satisfactoriamente.
A pesar de crearse la instancia, necesitará cierto tiempo para instalar el S.O. seleccionado, por lo que mientras tanto, sería interesante perder algo de tiempo en mirar otras cosas como por ejemplo activar una alarma que me notifique si se va a producir algún cargo en la facturación.

ACTIVAR NOTIFICACIONES DE FACTURACIÓN

Para evitar disgustos, sería interesante activar las notificaciones de facturación. Esto lo hacemos desde la consola de AWS, seleccionando el desplegable en nuestra cuenta en la barra superior (lado derecho) y haciendo click en «Billing & Cost Management».
Dentro del panel que aparece, seleccionamos en el menu lateral izquierdo la opción «Preferences»,  activamos la casilla «Receive billing alerts» que aparece, y clickamos el enlace «Manage billing alerts» que hay debajo.
Es probable que saltemos a una página en la que se haya cambiado el centro geográfico de trabajo a US East (N. Virginia), esto es por que los datos de facturación se llevan todos desde ahí, independientemente de donde tengas tus servidores, por lo que si no te ha cambiado a dicha localización, tendrás que hacerlo manualmente en la barra superior (lateral derecho).



Seleccionaremos la opción «Create Alarm» del «Alarm Summary», y en la nueva ventana seleccionaremos la métrica de facturación (USD – estimated charges) y seleccionamos NEXT.

Finalmente le añadimos un nombre para identificarla, ponemos el umbral mínimo al cruzar el cual se nos debe notificar (puede ser 0$), y seleccionamos «añadir lista de notificaciones» para introducir nombre de la lista e e-mails a notificar.

Finalmente creamos la alarma.

ACCESO SSH POR CLAVE PUBLICA/PRIVADA

Como comentábamos antes, la clave privada que hemos creado es interesante para poder acceder vía SSH a nuestra instancia en el cloud sin tener que poner la contraseña cada vez (solo necesitaremos tener nuestra clave en el ordenador).
Recordemos que nos hemos descargado la clave «miClave.pem» a nuestro ordenador. Para usarla cómodamente, lo mejor es moverla al directorio  ~/.ssh/ (asumo que nuestro pc usa OSX o Linux)

Es decir, quedará algo así:      /home/miusuario/.ssh/miClave.pem

Acto seguido debemos crear (o editar si ya existe) el archivo ~/.ssh/config para que incluya el siguiente contenido:
Host hostNickname
HostName direccionDelHost
User miUsuarioDelHost
IdentityFile «~/.ssh/miClave.pem»
Aquí hay que matizar 3 puntos:

  • hostNickname es solo un identificador, que usaremos al invocar el comando ssh
  • Desde la consola AWS, seleccionando EC2 -> Instances, veremos la instancia de nuestra máquina, y la ip pública que tiene (que es la que deberemos poner en el campo direccionDelHost del script anterior).
  • miUsuarioDelHost es el usuario por defecto del sistema operativo instalado. En el caso de Debian, es admin
Por lo que en mi caso, el script config quedaría asi:

Host hostNickname
HostName 54.72.183.83
User admin
IdentityFile «~/.ssh/miClave.pem»

Solo nos faltará un último detalle, que es limitar los permisos de la clave para que no sea accesible por nadie más, ya que si no SSH no me dejará conectarme. Esto lo hacemos con el siguiente comando:

miusuario$  chmod 700 ~/.ssh/miClave.pem

Hecho esto, para conectarnos a nuestra instancia solo debemos hacer lo siguiente:

miusuario$  ssh hostNickname

Si todo es correcto, veremos que el nombre de sesión del terminal ha pasado a ser miUsuarioDelHost$, y eso significa que estamos conectados con nuestra máquina en AWS.

A partir de aquí, podemos empezar a instalar lo que nos parezca en función del sistema que queramos montar.

En mi caso, instalaré todo lo necesario para montar un servidor de aplicaciones con Django, pero eso se queda para futuros posts.

BUENAS PRÁCTICAS

Nos hemos dado de alta en AWS, hemos creado una instancia con Debian, y además nos hemos conectado vía SSH sin tener que poner ni siquiera contraseña. Es un gran avance, pero quería hacer alguna recomendación extra por temas de seguridad.
  • Procedimiento clave pública/privada: si no queremos poblar nuestro ordenador con demasiadas claves, podemos utilizar una que ya tengamos creada en nuestro ordenador, y subir la pública a AWS para conectarnos con la privada correspondiente.
  • Password de usuario root: Muchos S.O. vienen de entrada con el password de root deshabilitado, y lo necesitarás cuando quieras instalar cualquier paquete, por lo que deberías introducir el password. Deberás encontrar el comando adecuado en función del S.O. que hayas instalado. Para el caso Debian solo debes introducir el comando:

         admin$ sudo passwd root

    que te permitirá introducir un nuevo password para el root.