Actividad 2. API Spring Boot con GitHub Actions y AWS Elastic Beanstalk
Práctica: API REST en Spring Boot con Integración Continua y Despliegue en la nube (GitHub Actions + AWS Elastic Beanstalk)
7. Todo en producción
Código final del controlador
Se actualiza el controlador para incluir un endpoint raíz (/) accesible públicamente, que servirá como verificación visual del despliegue en producción, además del endpoint de estado de la API.
src/main/java/com/dam/cicd/EstadoControlador.java
package com.dam.cicd;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class EstadoControlador {
@GetMapping("/")
public String inicio() {
return "Fin de la práctica: CI/CD con GitHub Actions y AWS Elastic Beanstalk";
}
@GetMapping("/api/estado")
public Map<String, Object> estado() {
return Map.of(
"estado", "OK",
"servicio", "dam-ci-cd-api-001",
"mensaje", "API operativa"
);
}
}
Publicación del cambio en producción
Una vez modificado el código, se registra el cambio y se envía al repositorio remoto:
git add src/main/java/com/dam/cicd/EstadoControlador.java
git commit -m "Añadir endpoint raíz y estado de la API"
git push origin main
Verificación final en producción
Una vez finalizado el pipeline, se comprueba el correcto funcionamiento de la aplicación accediendo a:
-
Endpoint raíz / → Muestra el mensaje de fin de práctica.
-
Endpoint de estado /api/estado → Devuelve un JSON con el estado del servicio.
Con esto se confirma que:
-
El despliegue automático funciona correctamente.
-
La aplicación está accesible públicamente.
-
El entorno de producción se ha actualizado sin intervención manual.

Conclusión de la práctica
Se ha implementado un sistema completo de Integración y Despliegue Continuo (CI/CD) utilizando:
-
GitHub Actions para la automatización del pipeline.
-
Maven para la construcción reproducible del proyecto.
-
AWS Elastic Beanstalk como plataforma de despliegue en producción.
Cada cambio enviado al repositorio activa automáticamente un pipeline que:
-
compila la aplicación,
-
genera el artefacto,
-
y lo despliega en AWS.
El correcto funcionamiento del sistema se valida mediante un endpoint raíz accesible públicamente y un endpoint adicional de estado del servicio.
Regla de oro (la más importante)
Si no estás usando la aplicación → el entorno debe estar apagado o terminado.
AWS cobra por recursos activos, no por código.
Terminar el entorno cuando no se use
No basta con detener la instancia: hay que terminar el entorno.
Pasos:
-
AWS Console
-
Elastic Beanstalk
-
Aplicación → Entorno
-
Actions → Terminate environment
-
Confirmar
Coste tras terminar el entorno
-
0 €
-
No queda EC2 activa.
-
No hay balanceador.
-
No hay servicios ejecutándose.
Si no estás usando la aplicación → el entorno debe estar apagado o terminado
¿Es complicado volver a lanzarlo? No.
-
Crear el entorno de nuevo: 5–10 minutos
-
El código ya está en GitHub.
-
GitHub Actions vuelve a desplegar automáticamente.
Coste real aproximado (orientativo)
Si se deja un entorno activo por error:
-
Elastic Beanstalk + EC2 24/7 → 5–10 € al mes
-
Con varios entornos o errores → puede subir más
En cloud:
Los entornos se crean para usarse y se destruyen cuando se termina.
Ahorro de costes en AWS
Una vez comprobado que la aplicación funciona correctamente en Elastic Beanstalk, el entorno debe ser terminado para evitar costes innecesarios.
Elastic Beanstalk permite crear el entorno de nuevo en cualquier momento, por lo que no es necesario mantenerlo activo permanentemente.
Mantener entornos cloud encendidos sin uso genera cargos económicos evitables