- Configuración AWS Completa (RDS + S3) - Guía paso a paso
- Setup AWS RDS - Detalles técnicos de RDS
mvn clean installCrea un archivo .env en la raíz del proyecto con:
# Database
DATABASE_URL=jdbc:mysql://TU-ENDPOINT-RDS:3306/awsacademy?useSSL=false&serverTimezone=UTC
DATABASE_USERNAME=admin
DATABASE_PASSWORD=AwsAcademy2024!
# AWS Credentials
AWS_ACCESS_KEY_ID=ASIA...
AWS_SECRET_ACCESS_KEY=...
AWS_SESSION_TOKEN=IQoJb3...
# AWS Configuration
AWS_REGION=us-east-1
AWS_S3_BUCKET_NAME=tu-bucket-name
AWS_SNS_TOPIC_ARN=arn:aws:sns:us-east-1:...
AWS_DYNAMODB_TABLE_NAME=sesiones-alumnos.env está en .gitignore y no se subirá a Git.
Windows:
.\run-local.ps1Linux/Mac:
chmod +x run-local.sh
./run-local.shLa API estará disponible en: http://localhost:8080
GET /alumnos- Lista todos los alumnosGET /alumnos/{id}- Obtiene un alumno (incluye URL de foto)POST /alumnos- Crea un alumnoPUT /alumnos/{id}- Actualiza un alumnoDELETE /alumnos/{id}- Elimina un alumnoPOST /alumnos/{id}/fotoPerfil- Sube foto de perfil (multipart/form-data)
GET /profesores- Lista todos los profesoresGET /profesores/{id}- Obtiene un profesorPOST /profesores- Crea un profesorPUT /profesores/{id}- Actualiza un profesorDELETE /profesores/{id}- Elimina un profesor
curl -X POST http://localhost:8080/alumnos \
-H "Content-Type: application/json" \
-d '{
"nombres": "Juan",
"apellidos": "Pérez",
"matricula": "A00123456",
"promedio": 9.5,
"password": "miPassword123"
}'curl -X POST http://localhost:8080/alumnos/1/fotoPerfil \
-F "file=@/ruta/a/foto.jpg"curl http://localhost:8080/alumnos/1Respuesta:
{
"id": 1,
"nombres": "Juan",
"apellidos": "Pérez",
"matricula": "A00123456",
"promedio": 9.5,
"password": "miPassword123",
"fotoPerfilUrl": "https://tu-bucket.s3.us-east-1.amazonaws.com/alumnos/uuid.jpg"
}- Java 17
- Spring Boot 3.x
- Spring Data JPA
- MySQL (AWS RDS)
- AWS SDK for S3
- Lombok
- Maven
src/main/java/com/uady/awsproject/
├── alumno/
│ ├── controller/ # REST controllers
│ ├── entity/ # JPA entities
│ ├── mapper/ # Entity ↔ Model mappers
│ ├── model/ # Domain models (DTOs)
│ ├── repository/ # Data access layer
│ └── service/ # Business logic
├── profesor/ # Same structure as alumno
└── common/
├── config/ # AWS S3 configuration
├── exception/ # Exception handling
├── service/ # Shared services (S3Service)
└── util/ # Utilities
- Las credenciales AWS están en
application.properties(no recomendado para producción) - El bucket S3 es público (solo para desarrollo)
- No hay autenticación ni autorización implementada
Para producción, considera:
- Usar AWS Secrets Manager o Parameter Store
- Implementar Spring Security
- Configurar políticas IAM más restrictivas
- Usar HTTPS
Las credenciales AWS Academy expiran cuando se detiene el laboratorio. Deberás:
- Ir a AWS Details
- Copiar nuevas credenciales
- Actualizar
application.properties - Reiniciar la aplicación
El esquema de la base de datos se crea automáticamente gracias a:
spring.jpa.hibernate.ddl-auto=updateSi prefieres crear las tablas manualmente, consulta el script SQL en docs/AWS_RDS_SETUP.md.
✅ Verifica:
- Security Group permite puerto 3306
- Public access está habilitado
- Endpoint es correcto
✅ Verifica:
- Credenciales AWS están actualizadas
- Bucket tiene ACLs habilitados
- Block public access está desactivado
✅ Ejecuta:
mvn clean installPara más información, consulta la documentación completa en docs/.