Eficiencia Analítica en la Nube: Taller Práctico con RDS, S3, Glue y Athena en AWS
Tags: aws, español, tutorial, laboratorio
Published: 2024-02-26 13:27:57

Saludos a todos en esta emocionante entrega de laboratorios de AWS! En esta sesión, trabajaremos juntos para construir una solución integral en AWS.

### Que aprenderemos?

- Seguridad avanzada: Utilizaremos AWS Key Management Service (KMS) para encriptar una instantanea de base de datos.

- Almacenamiento en S3: Crearemos un Bucket de S3 a donde exportaro.

- snapshot: Crearemos una copia de una base de datos MySQL.

- Exportar la copia de seguridad o snapshoot a un Bucket S3.

- Descubrimiento de metadatos: Aprovecharemos el rastreador de AWS Glue para descubrir y almacenar metadatos en el Catálogo de datos.

- Consultas eficientes: Athena utilizará estos metadatos para ejecutar consultas SQL directamente sobre nuestros datos almacenados en S3.

Para aquellos que aún no han creado una base de datos, les recomiendo seguir nuestro laboratorio anterior [Crea una base de datos en RDS paso a paso](https://dev.to/madriz03/aws-rds-crea-tu-base-de-datos-y-realiza-tus-primeras-consultas-en-un-laboratorio-practico-32bc)

**1. Creacion de una Llave KMS para cifrado.**

- Ubiquemos el servicio KMS dentro de la consola de AWS.

- Estando alli pulsaremos "Crear clave".

- Elige el tipo de clave como "Simétrico"; esto implica que la clave servirá tanto para cifrar como para descifrar.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wk5nx3vux8sw9kc5j9mi.png)

- Asigna un nombre a la clave y opcionalmente, proporciona una descripción que facilite la identificación de su propósito.

- Por ahora, dejaremos las demás configuraciones en sus valores predeterminados. Posteriormente, concederemos permisos a usuarios y roles para que puedan utilizar esta clave.

**2. Crear Bucket S3**

- Ubiquemos el servicio de S3 en la consola de AWS y elijamos crear Bucket.

- La región será Norte de Virginia (us-east-1). Asigna un nombre al bucket; en mi caso, lo nombraré "copy-for-analitica". Deja las demás configuraciones como predeterminadas, ya que, por ahora, no necesitamos que nuestro bucket sea de acceso público, tampoco requerimos versionado ni ninguna configuración avanzada.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4fqy121m024y2lazbpwl.png)

- Dado que este bucket será el destino de copias de seguridad, como buena práctica, podríamos acceder al bucket y crear un directorio específico para nuestra base de datos.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/36wtx893326xdlrh45wb.png)



**3. Creemos la copia  de la Base de datos**

- Vayamos al servicio RDS y ubiquemos nuestra base de datos, si no tienes una, te recuerdo que ya hice  un laboratiorio practico para esto [Crea una base de datos en RDS paso a paso](https://dev.to/madriz03/aws-rds-crea-tu-base-de-datos-y-realiza-tus-primeras-consultas-en-un-laboratorio-practico-32bc)

- Selecciona la base de datos, haz clic en el botón de acciones y elige "Realizar instantánea".

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovgl6qwd8gnihc82m8sl.png)

- Asigna un nombre a la instantánea en mi caso la llame "snap-MyDB", click en el boton "Crear". Ten en cuenta que esta acción suele demorar unos minutos.

4. Exportacion de Instantanea al Bucket S3.

- Una vez creada la instantanea la seleccionamos y hacemos click en el boton "Acciones" y elegimos la opcion "Exportar a Amazon S3"


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01axpxw8uw3x5jjnlkay.png)

- Ingresa un identificador para la exportacion, no es mas que un nombre.

- En la seccion "datos exportados" queremos exportar la totalidad de nuestros datos, ya que tambien existe la opcion de exportaciones parciales.

- En la seccion "Destino de S3" elige el bucket que creamos anteriormente en mi caso lo llame "copy-for-analitica" y en el campo "prefijo" va el nombre de la carpeta donde insertaremos esta exportacion.

- En la seccion de "Rol IAM" crearemos un nuevo rol, solo asignale un nombre al rol, este por defecto se crea con politicas que permiten insertar datos en S3.

- En la seccion "Cifrado" vamos a elegir la clave KMS que creamos al inicio. La clave de cifrado se utiliza para cifrar los datos antes de ser almacenados en el bucket de S3. Esto proporciona una capa adicional de seguridad, especialmente cuando los datos son sensibles o confidenciales.

- Procede a realizar la exportacion, esto puede demorar entre 20 y 25 minutos, dependiendo de la cantidad de datos.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0sbdgyhxwwjdduy1qxva.png)

**Revisemos el Bucket S3**

Ahora, al explorar nuestro bucket 'copy-for-analitica', dirigimos la mirada hacia el directorio 'copy-MyDB'. Aquí, encontramos la instantánea que acabamos de exportar, identificada por el nombre asignado durante el proceso de exportación. Este paso confirma el éxito de nuestra tarea, proporcionando una organización ordenada y accesible para nuestros datos en la nube.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rnyy962xqsbn67i31syi.png)



4. **Crear Crawlers (rastreador) de Glue.**

Al dar este paso, estamos configurando un rastreador en AWS Glue. Este rastreador nos brinda la capacidad de extraer metadatos esenciales de la copia de nuestra base de datos, que actualmente reside en el bucket S3. Estos metadatos son fundamentales para facilitar consultas analíticas desde Athena en etapas posteriores del proceso. Esencialmente, estamos preparando el terreno para una exploración eficiente y detallada de nuestros datos almacenados en la nube.

- Ubiquemos el servicio Glue desde la consola, recuerda que puedes hacer uso de la barra de busqueda.

- Una vez alli, en la columna izquierda,  seccion "Data catalog" busca la opcion "Crawlers"


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4heu7m8z0gegx19tprvl.png)

- Crear crawlers, asignale un nombre y una descripcion, click a "Siguiente".

- Veremos la seccion de "Data Sources" donde corresponde agregar la fuente de los datos de donde el crawler obtenedra la metadata, en nuestro caso es un bucket de S3.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/snqnhkakwwz8i4s2a4ov.png)

- Al pulsar "Add sources" se abrira una ventana donde especificaremos "S3" como origen de los datos, navegaremos dentro de las opciones de "S3" para elegir nuestro Bucket, tambien puedes insertar la ruta donde se encuentra el bucket.

- Tambien elegiremos la opcion de rastrear todas las subcarpetas que existan dentro del bucket y hacemos click en "Agregar fuente de datos" para finalizar esta tarea.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uvjb4dwx7o7a3jmxqsia.png)


- Agregada la fuente, pasamos al siguiente paso, donde crearemos un rol, solo debemos asignarle un nombre y este se creara con los permisos necesarios para que el crawler acceda a S3, colocar un  nombre descriptivo puede ser buena practica para identificar o reutilizar, click en "Siguiente"

- Ahora debemos agregar una base de datos, click en "Agregar base de datos", hagamos un parentesis aqui:

Esta base de datos actúa como un repositorio organizado para los metadatos extraídos por el rastreador, incluyendo información sobre tablas y columnas. La creación de esta base de datos no solo estructura de manera ordenada la información, sino que también facilita la realización de consultas analíticas más efectivas en Athena en fases posteriores del proceso.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxrnq5ty5q078w52p8zs.png)

Te recomiendo no usar caracteres especiales para evitar inconvenientes al momento de lanzar consultas SQL.

- Después de crear la base de datos, simplemente la seleccionamos como nuestra base de datos objetivo, manteniendo las configuraciones predeterminadas para el resto. esto funcionara asi: El rastreador se dirige a S3, recupera la informacion, y l almacena en la recién creada base de datos en el Catálogo de AWS Glue.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9h7fcqpb4gtt858vti2.png)

- Hacemos una revision de todos los parametros establecidos y click  en "Crear crawler"


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iafilflfki5io3408s39.png)

- Creado el Crawler, no queda mas que ejecutarlo o correrlo en la opcion "Run crawler" para que cumpla con su funcion ya explicada anteriormente.

**5. Habilitar el Crawler para Utilizar Nuestra Clave KMS.**

En este paso, permitiremos que nuestro rastreador (Crawler) haga uso de la clave de AWS Key Management Service (KMS) que hemos configurado. Sigue estos pasos:

- Accede a AWS Key Management Service (KMS) y busca la clave correspondiente haciendo clic sobre ella.

- Desplázate hasta la sección de 'Usuarios y Claves' dentro de la configuración de la clave KMS.

- Agrega el rol asociado a nuestro rastreador a la lista de usuarios autorizados para utilizar esta clave. Esto garantiza que el rastreador tenga los permisos necesarios para interactuar con KMS y usar la clave para desencriptar la información almacenada durante el proceso de rastreo en nuestro bucket S3.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8m4jynkkmg5nb9zw3jb.png)

**6. Consultas SQL desde Athena**

Con toda la configuración completada, ahora podemos realizar consultas SQL directamente desde Athena. Vamos a dirigirnos a la consola de AWS y ubicar el servicio Athena para comenzar a explorar y analizar nuestros datos de manera eficiente.


- Recordemos que debenos correr el crawler o rastreador.

- Si ya ejecutaste el crawler, al ingresar a Athena ya podremos ver nuestra base de datos en la seccion de origen de los datos y la cual ya se encuentra en el Data Catalog.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k54laohp26xmscsy7pv8.png)


- Antes de realizar una consulta es necesario ir a la pestaña de "configuracion" luego "Administracion" y establecer un destino para los resultados que arrojen las consultas que hagas, este puede ser el mismo bucket que creamos, puedes opcionalmente crear un directorio especificamente para eso dentro del bucket y entonces colocar la ruta junto con su prefijo que es el nombre de la carpeta.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szm7fe2m4qdmkd2woexc.png)

**7. Hagamos un par de consultas**

Obtengamos todos nuestros registros

```
SELECT *  FROM mydb;
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvzyxrzpfias72bl0unn.png)
**
- Obtengamos los usuarios mayores de 30 años**

```
SELECT * FROM mydb
WHERE edad > 30;
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cff35ayrhran4y9kw4r6.png)

Como pueden observar todo salio perfecto, de hecho si revisas el bucket podras ver que los resultados de las consultas se estan guardando y estos resultados puedes utilizarlo para crear visualizacion con Quicksight por ejemplo, es una idea que puedes implementar despues de este taller.

## Conclusion

En este laboratorio práctico, hemos explorado cómo realizar consultas SQL sin afectar el rendimiento de la base de datos, utilizando servicios clave de AWS como RDS, S3, KMS, Glue y Athena. Esta metodología es esencial en el análisis de datos y destaca la capacidad de consultar datos analíticos sin impactar la operatividad de la base de datos.

Es posible Considerar la automatización y la actualización de datos en S3 cuando ingresan a la base de datos principal. Esta capacidad de automatización brinda una solución eficiente y dinámica, facilitando la eficiencia y agilidad en el análisis de datos continuo.

Espero que hayan disfrutado del contenido. ¡Anímense a interactuar con el post y, si desean realizar algún incentivo económico, aquí están mis datos habituales

**Paypal: ** unpagopaypal@gmail.com
**Binance Pay:** 213182157