Este repositorio contiene una aplicación de Gestión de Clientes desarrollada con Spring Boot y configurada para implementarse en una instancia AWS EC2, con el archivo JAR almacenado en un bucket de S3 y una base de datos MySQL en AWS RDS.
Antes de compilar o ejecutar el proyecto, asegúrate de tener lo siguiente:
- Java 17 instalado.
- Maven instalado.
- Una cuenta activa en AWS.
- AWS CLI configurada en tu máquina local:
aws configure
- Una instancia EC2 configurada y accesible.
git clone https://github.com/l3nny548/seek.git
cd clienteEdita el archivo src/main/resources/application.properties para incluir las credenciales de tu base de datos y configuraciones JWT:
spring.datasource.url=jdbc:mysql://<RDS-ENDPOINT>:3306/gestion_clientes
spring.datasource.username=<DB-USERNAME>
spring.datasource.password=<DB-PASSWORD>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
jwt.secret=YourSecretKey
jwt.expiration=3600000Si estás usando AWS Secrets Manager para las credenciales de la base de datos, asegúrate de configurar el acceso correspondiente en tu código.
Ejecuta el siguiente comando para descargar todas las dependencias requeridas:
mvn clean installPara ejecutar el proyecto en tu máquina local:
-
Iniciar MySQL localmente o en Docker: Si deseas usar MySQL local, asegúrate de que esté corriendo en el puerto 3306.
O puedes usar Docker Compose:
docker-compose up -d
-
Ejecutar la aplicación:
mvn spring-boot:run
-
Accede a la aplicación desde tu navegador o cliente REST en:
http://localhost:8080 -
Documentación Swagger: La documentación de la API está disponible en:
http://localhost:8080/api/swagger-ui/index.html
- Ve a la consola de AWS RDS y crea una instancia de MySQL.
- Configura:
- Nombre de la base de datos:
gestion_clientes. - Usuario y contraseña.
- Nombre de la base de datos:
- Copia el endpoint de la base de datos y actualiza el archivo
application.propertiescon esta información.
Compila la aplicación en un archivo JAR:
mvn clean packageEsto generará un archivo JAR en el directorio target/.
- Ve a la consola de S3 y crea un bucket (si no tienes uno).
- Sube el archivo JAR generado en el paso anterior al bucket.
- Copia el enlace del archivo JAR en S3.
-
Ve a la consola de AWS EC2 y lanza una nueva instancia:
- Selecciona una imagen Amazon Linux 2 o similar.
- Escoge un tipo de instancia (por ejemplo,
t2.microsi estás en el nivel gratuito). - Configura un grupo de seguridad que permita acceso a los puertos:
- 22 para SSH.
- 8080 para la aplicación.
-
Conéctate a la instancia mediante SSH:
ssh -i <tu-archivo.pem> ec2-user@<ip-publica-de-la-instancia>
-
Actualiza el sistema e instala Java:
sudo yum update -y sudo amazon-linux-extras enable corretto17 sudo yum install java-17-amazon-corretto -y
-
Descarga el archivo JAR desde S3:
aws s3 cp s3://<nombre-del-bucket>/<nombre-del-archivo>.jar app.jar
-
Ejecuta la aplicación:
java -jar app.jar
-
La aplicación estará disponible en la IP pública de la instancia:
http://<ip-publica-de-la-instancia>:8080
-
Autenticación JWT:
- Los endpoints están protegidos mediante un token JWT generado en el endpoint
/auth/login.
- Los endpoints están protegidos mediante un token JWT generado en el endpoint
-
Seguridad de secretos:
- Se recomienda usar AWS Secrets Manager para gestionar credenciales sensibles.
-
Configuración segura:
- Claves sensibles y credenciales están separadas del código fuente mediante variables de entorno o Secrets Manager.
-
Escalabilidad:
- Diseñado para ejecutarse en instancias EC2 con posibilidad de escalar horizontalmente.
-
Monitoreo y acceso:
- Se recomienda usar CloudWatch Logs para rastrear eventos de la aplicación.
Si deseas contribuir a este proyecto, realiza un fork y envía un pull request con tus cambios.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más información.