En este repositorio se recopila todo el código desarrollado para el Trabajo Final de Máster del Máster de Ciencia de Datos e Ingeniería de Datos en la Nube.
Se despliega toda una infraestructura en AWS
para crear un sistema de verificación de datos geoespaciales:
-
Se crea una
Lambda
que realiza peticiones a unaAPI
de datos meteorológicos cada dos horas para procesarlos y almacenarlos en una tabla deDynamoDB
. -
Se despliega una
API Gateway
con dos recursos (GET /clima
yGET /clima/{provincia}
) e integrada con otraLambda
para que se puedan consultar los datos almacenados en la tabla deDynamoDB
mediante dicha API. -
Por último, se crea una aplicación web con
Streamlit
para mostrar los datos de forma gráfica en un mapa, además de visualizaciones de los datos conSeaborn
. Esta aplicación se conteneriza creando una imagen deDocker
para subirla aECR
y desplegarla mediante un servicio deECS
conFargate
, realizando la configuración de red (subredes, grupo de seguridad, puerta de enlace de internet, etc) medianteVPC
.
Se realiza linting
del código de Python, se ejecutan tests unitarios y se realiza el aprovisionamiento de toda la infraestructura de AWS
con Terraform
mediante un proceso de CI/CD
con GitHub Actions
.
-
.github: Directorio donde se recopilan los
YAML
que se encargan de definir los flujos deCI/CD
deGithub Actions
. En el proceso de integración continua se realizalinting
del código dePython
y en el proceso de despliegue continuo se ejecuta el aprovisionamiento de la infraestructura deAWS
medianteTerraform
. -
img: Carpeta para recopilar imágenes.
-
infra: En esta carpeta se recopilan todos los archivos de configuración de
Terraform
desarrollados conHCL
y estructurados en módulos y los recursos comolayers
y códigos de lasLambda
en.zip
. -
src: Directorio donde se almacenan los códigos de
Python
desarrollados para las funcionesLambda
así como para la aplicación web deStreamlit
. -
test: Carpeta donde se almacenan los tests unitarios creados de las funciones de
Python
.