Taller UD10_03: BBDD en la nube (AWS) con IntelliJ¶
Introducción¶
La intención de este documento es la de dar una perspectiva más realista del uso del acceso a datos, ya que en lugar de usar la misma máquina del alumno como servidor de BBDD, vamos a desplegar el servidor MariaDB en una máquina alojada en la nube de Amazon (AWS).
Requisitos¶
Para realizar esta práctica guiada necesitamos:
- Acceso al Learner Lab proporcionado por el profesor. (https://awsacademy.instructure.com)
- Conocimientos sobre las BBDD, IP's y puertos.
- Un dispositivo local con capacidad de ejecutar un cliente de BBDD, con acceso a los puertos e Ip's de AWS (Ojo con la red de conselleria)
Guía paso a paso¶
Preparar el entorno de la nube¶
Iniciar Laboratorio¶
Lo primero que necesitamos es arrancar el laboratorio, para ello Accedemos al LMS del awsacademy, buscamos el Curso facilitado por el docente, accedemos a sus contenidos y a continuación al Learner Lab. (Si es la primera vez que accedemos debemos aceptar los términos de uso).
Inicialmente el laboratorio está en rojo:

Elegimos la opción Start Lab y esperamos a que aparezca el laboratorio en verde:

Por defecto el Learner Lab nos proporciona 100 dolares de saldo, y un tiempo de 4 horas, tras el cual se detendrán la mayoría de servicios que tengamos en marcha. Pero mientras quede saldo podemos volver a iniciar el Laboratorio y dispondremos de 4 horas más.
Una vez aparece en verde podemos hacer click sobre las letras AWS y aparecerá el Dashboard de AWS (debemos permitir las ventanas emergentes):

Crear una BD en AWS¶
Debemos buscar el apartado Amazon RDS (ahora se llama Aurora y RDS):

Una vez aquí debemos pulsar el botón [Crear base de datos]:

Ahora debemos elegir las opciones para nuestra base de datos:
Al Crear base de datos dejamos la Creación estándar por defecto:

En Opciones del motor elegimos MariaDB (Como versión puedes elegir la más moderna que aparezca):

En Plantillas elegimos la Capa gratuita:

A continuación, en Configuración:
Elegimos el Identificador de instancias de bases de datos, podemos poner el que más nos guste, en mi caso databaseDMP, también debemos indicar el username, en mi caso admin, y por último la Contraseña maestra y su confirmación, que deberá tener más de 8 carácteres ASCII imprimibles, en mi caso 123456Ab$.
Anota todos estos datos en un lugar seguro, los necesitarás más adelante.¶

En la Configuración de la instancia dejamos todo por defecto (ahora db.t4g.micro):

En Almacenamiento dejamos el Almacenamiento asignado en 20GiB y deshabilitamos el escalado automático del almacenamiento:

Dejamos Disponibilidad y durabilidad por defecto.

En el apartado Conectividad dejamos todo por defecto excepto la opción de Acceso público que debemos indicar que Sí:

En la parte baja elegiremos crear un nuevo Grupo de seguridad de VPC y el puerto 3306, el resto de opciones por defecto:

OJo! aunque el puerto 3306 debería estar abierto el la red del instituto, he encontrado ocasiones en las que no ha funcionado correctamente, si te sucede esto, puedes cambiar al puerto 6000 o alguno de los que te sugiera tu profesor.¶
En el apartado Configuración adicional indicamos starwars como nombre de la base de datos inicial y cambiamos el periodo de retención de copias a 1 dia:

dejamos el resto de opciones por defecto y pulsaremos el botón del final [Crear base de datos]:

Si todo ha ido bien AWS nos indica que se está creando la BD y puede tardar varios minutos:

Una vez aparezca el estado en Disponible, podremos pasar al siguiente paso:

Abrir puertos para el acceso público¶
Ahora abriremos el puerto necesario para la que la BD sea accesible desde el exterior, para ello haremos clic sobre el nombre de la base de datos:

Y en la siguiente ventana hacemos click sobre el Grupo de seguridad de la VPC :

Una vez estamos en el apartado de Grupos de seguridad, debemos elegir la pestaña Reglas de entrada, y el botón Editar reglas de entrada:

Si hemos seguido correctamente la guia debería aparecer el puerto 3306 abierto, pero solo para la ip pública desde la que estamos accediendo, así que deberemos pulsar la x para eliminar esa ip:

Y por último agrega la ip 0.0.0.0 para que sea acesible desde cualquier lugar:

Dirección pública de la BBDD¶
Ahora necesitamos la URL de acceso a la BD desde el exterior, primero volvemos al apartado RDS:

y a continuación haremos clic sobre el nombre de la base de datos:

Y en la siguiente ventana encontraremos los datos que necesitamos, por un lado el Punto de enlace (databasedmp.cm6pc9b4jil5.us-east-1.rds.amazonaws.com) y por otro el Puerto (3306):

Con toda esta información podemos realizar conexiones desde el exterior.
Carga de datos desde IntelliJ¶
Instalar MySQL WorkBench¶
Dependiendo de nuestro sistema operativo deberemos usar un procedimiento u otro, lo mejor es consultar la página web y seguir sus instrucciones:
https://www.mysql.com/products/workbench/
Conexión de prueba¶
Una vez instalado nuestro cliente configuraremos una nueva conexión con los datos que hemos guardado en pasos anteriores, indicaremos el Connection Name (nombre de la conexión), Hostname (URL de la base de datos), y username (usuario de la base de datos). Al pulsar el botón Test Connection, nos permite probar la conexión y nos pedirá el password, y si pulsamos OK se guardará.

Es posible que nos indique que puede haber problemas de compatibilidad, pero podemos dar a Continue anyway sin preocuparnos.

Y deberíamos ver nuestro entorno de modo similar a este:

Importar datos de muestra¶
Para no trabajar con una base de datos vacía partiremos de una base de datos con información que podemos encontrar en el siguiente enlace: https://github.com/miguelmarti/FreakDataBases
En concreto usaremos la de StarWars.sql, la descargaremos de github, abriremos el archivo con nuestro editor preferido, copiaremos todo su contenido y lo pegaremos en la ventana blanca del entorno. A continuación pulsamos el rayo para ejecutar el script, y por último el botón para refrescar el contenido de las tablas:

Una vez hecho todo esto debería tener al menos 7 tablas:

Cuando comprobemos que tenemos la 7 tablas, podemos seguir.
Preparar el cliente local¶
Descargar MySQL connector¶
Tal y como vimos en el taller UD10_T02_Conectores_ES, añade el conector a tu proyecto (mediante jar o maven, como prefieras.)
Código del cliente¶
En nuestro IDE preferido creamos un nuevo archivo AWSTest.java con el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | |
Recuerda cambiar la constante
AWSDNS,DBNAME,PUERTO,USERNAMEyPASSWORDpor elStringointque corresponda con tu configuración.¶
Ejecución de prueba¶
Desde el punto de vista del cliente¶
Una vez ejecutado el cliente debe aparecer algo similar a esto:
1 2 3 4 5 6 7 8 | |
Y si a continuación elegimos por ejemplo la película 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Warning SLF4J¶
Si te aparece el mensaje siguiente:
1 2 3SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.Aunque es un warning y no debe afectar al funcionamiento de tus programas, resolver el error es tan sencillo como añadir una dependencia más:
1 2 3 4 5 6<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.17</version> </dependency>
Tarea¶
Ahora que has visto como crear una BBDD en AWS:
- Genera una nueva BBDD con el motor que prefieras (MySQL, MariaDB, Oracle, etc...)
- Carga una Base de Datos que puedas conseguir por tu cuenta, que crees desde cero, o a partir de las que te proporciona el profesor. La condición es que debe tener al menos 3 tablas, al menos dos de ellas deben estar relacionadas, y debes tener al menos 10 registros (información) en cada una de las tablas.
Comenta con el profesor (por correo electrónico) la BBDD que usaras para evitar que dos alumnos usen la misma (en caso que uses una que encuentres por Internet). 3. Esta nueva Base de Datos será la que usaras para completar la siguiente tarea, así que quizá deberías echarle un ojo antes de tomar la decisión.
Envía una memoria en fichero pdf explicando los pasos seguidos (con capturas) a la tarea de Aules correspondiente.