Desplegar una arquitectura en AWS con los siguientes componentes:
- Frontend: Nginx sirviendo contenido estático (
guess.html) - Backend: Aplicación Flask
- Base de Datos: PostgreSQL en una instancia EC2
- Infraestructura: Launch Templates, Auto Scaling Groups, Network Load Balancers (NLBs), Roles IAM y AWS Systems Manager Parameter Store
-
En la consola de AWS, abre AWS Systems Manager → Parameter Store.
-
Haz clic en Create parameter.
-
Llena los siguientes campos:
Campo Valor sugerido Name /app/modelo1/backendurlABCType StringValue http://127.0.0.Description URL del backend Flask -
Guarda el parámetro.
Este parámetro será leÃdo por las instancias del frontend cuando arranquen.
- Copia la plantilla YAML proporcionada por el profesor.
- Reemplaza todas las ocurrencias del sufijo
ABCpor tu clave ULSA.- Ejemplo:
arquitectura1frontendABC→arquitectura1frontendULSA001arquitectura1backnlbABC→arquitectura1backnlbULSA001
- Ejemplo:
- Guarda el archivo modificado con un nombre como:
- Abre AWS CloudFormation → Create Stack → With new resources (standard).
- Selecciona Upload a template file y carga tu archivo
.yaml. - Completa los parámetros requeridos:
| Parámetro | Ejemplo / Descripción |
|---|---|
VpcId |
ID de la VPC existente |
SubnetIds |
Lista de al menos 2 subnets (en distintas AZs) |
FrontendAmiId |
AMI con Nginx preinstalado |
BackendAmiId |
AMI con Flask preinstalado |
DatabaseAmiId |
AMI con PostgreSQL |
KeyName |
Par de llaves SSH existente |
BackendParameterStore |
Nombre del parámetro creado (/app/modelo1/backendurlABC) |
- Crea el stack y espera a que el estado cambie a CREATE_COMPLETE.
- En CloudFormation → Stack Outputs, toma nota de:
FrontendNlbDnsNameBackendNlbDnsName
- Verifica en la consola:
- EC2 → Load Balancers: los NLBs deben estar activos.
- EC2 → Auto Scaling Groups: debe existir una instancia activa de frontend y backend.
- EC2 → Instances: la instancia PostgreSQL debe estar en ejecución.
-
Copia el valor de
BackendNlbDnsNamedesde los Outputs del stack. -
Abre AWS Systems Manager → Parameter Store.
-
Edita el parámetro
/app/modelo1/backendurlABC. -
Sustituye su valor con el DNS del backend, por ejemplo:
-
Guarda los cambios.
Después de actualizar el parámetro, las instancias del frontend deben reiniciarse para leer el nuevo valor.
Existen dos formas de hacerlo:
- En la consola de AWS, entra a EC2 → Instances.
- Identifica la instancia asociada al Auto Scaling Group del frontend (por ejemplo
arquitectura1frontasgULSA001). - Selecciónala y elige Instance state → Terminate instance.
- El Auto Scaling Group creará automáticamente una nueva instancia del frontend, que leerá el valor actualizado del Parameter Store.
- Entra a EC2 → Auto Scaling Groups.
- Selecciona el grupo
arquitectura1frontasgULSA001. - Haz clic en Edit.
- Cambia los valores:
- Desired capacity =
0 - Minimum capacity =
0
- Guarda los cambios y espera a que las instancias se terminen.
- Luego vuelve a editar y cambia:
- Desired capacity =
1 - Minimum capacity =
1
- Guarda nuevamente.
- Esto lanzará una nueva instancia del frontend con la configuración actualizada.
- Espera a que la nueva instancia del frontend esté en estado Healthy dentro del Target Group.
- Abre el DNS del Frontend NLB (
FrontendNlbDnsName) en tu navegador. - Verifica que:
- El sitio cargue correctamente.
- El frontend se comunique con el backend Flask.
Cuando termines el ejercicio:
- Elimina el stack desde CloudFormation → Delete Stack.
- Borra el parámetro
/backend/urlen AWS Systems Manager → Parameter Store.
flowchart TD
A[Crear parámetro /backend/url en SSM] --> B[Modificar plantilla con clave ULSA]
B --> C[Crear Stack en CloudFormation]
C --> D[Obtener DNS del Backend NLB]
D --> E[Actualizar valor del parámetro en SSM]
E --> F[Terminar instancia frontend o escalar ASG a 0]
F --> G[ASG lanza nueva instancia con parámetro actualizado]
G --> H[Frontend se comunica correctamente con el Backend]
5. Guarda los cambios.
---
### 6. Regenerar las instancias del frontend
Después de actualizar el parámetro, las instancias del frontend deben reiniciarse para leer el nuevo valor.
Existen **dos formas** de hacerlo:
#### 🔹 Opción A — Terminar manualmente la instancia EC2
1. En la consola de AWS, entra a **EC2 → Instances**.
2. Identifica la instancia asociada al Auto Scaling Group del frontend (por ejemplo `arquitectura1frontasgULSA001`).
3. Selecciónala y elige **Instance state → Terminate instance**.
4. El Auto Scaling Group creará automáticamente una nueva instancia del frontend, que leerá el valor actualizado del Parameter Store.
#### 🔹 Opción B — Ajustar el Auto Scaling Group
1. Entra a **EC2 → Auto Scaling Groups**.
2. Selecciona el grupo `arquitectura1frontasgULSA001`.
3. Haz clic en **Edit**.
4. Cambia los valores:
- **Desired capacity** = `0`
- **Minimum capacity** = `0`
5. Guarda los cambios y espera a que las instancias se terminen.
6. Luego vuelve a editar y cambia:
- **Desired capacity** = `1`
- **Minimum capacity** = `1`
7. Guarda nuevamente.
- Esto lanzará una nueva instancia del frontend con la configuración actualizada.
---
### 7. Validar la actualización
1. Espera a que la nueva instancia del frontend esté en estado **Healthy** dentro del Target Group.
2. Abre el **DNS del Frontend NLB** (`FrontendNlbDnsName`) en tu navegador.
3. Verifica que:
- El sitio cargue correctamente.
- El frontend se comunique con el backend Flask.
---
### 8. Limpieza (opcional)
Cuando termines el ejercicio:
- Elimina el stack desde **CloudFormation → Delete Stack**.
- Borra el parámetro `/backend/url` en **AWS Systems Manager → Parameter Store**.
---
## 🧠Resumen visual del flujo
```mermaid
flowchart TD
A[Crear parámetro /backend/url en SSM] --> B[Modificar plantilla con clave ULSA]
B --> C[Crear Stack en CloudFormation]
C --> D[Obtener DNS del Backend NLB]
D --> E[Actualizar valor del parámetro en SSM]
E --> F[Terminar instancia frontend o escalar ASG a 0]
F --> G[ASG lanza nueva instancia con parámetro actualizado]
G --> H[Frontend se comunica correctamente con el Backend]