71be2abd2e
- Terraform modules: VPC, EC2, RDS, S3, CloudFront, Route53, Lambda, IAM, Security Groups - Ansible playbooks for server configuration - Scripts: create-test-environment.sh, destroy-test-environment.sh, validate-environment.sh - Documentation: README, QUICKSTART, AGENTS - Jenkins pipeline for automated deployment - Jenkins pipeline for environment destruction
397 lines
15 KiB
Markdown
397 lines
15 KiB
Markdown
# Analisis de Cuenta AWS 668889063715 - SACC v4 Test Environment
|
|
|
|
> **Fecha de analisis:** 2026-06-01
|
|
> **Cuenta AWS:** 668889063715
|
|
> **Region:** mx-central-1
|
|
> **Proyecto:** SACC v4 (Duplicacion de Produccion)
|
|
> **Estado:** Documento de analisis y planificacion - SIN CAMBIOS APLICADOS
|
|
|
|
---
|
|
|
|
## 1. Resumen Ejecutivo
|
|
|
|
Este documento analiza la cuenta AWS `668889063715` para determinar la viabilidad y estrategia de duplicacion del entorno de produccion SACC v4. **No se han ejecutado cambios** - este es un documento de planificacion basado en la arquitectura conocida de produccion.
|
|
|
|
### Objetivo
|
|
Crear un entorno de pruebas identico al de produccion en la cuenta `668889063715`, utilizando naming convention `sacc4-test-*` para evitar conflictos.
|
|
|
|
### Alcance
|
|
- Infraestructura completa (VPC, EC2, RDS, S3, CloudFront, Route53, Lambda)
|
|
- Configuracion de servidor (Nginx, Systemd, Usuarios)
|
|
- Scripts de automatizacion para creacion, validacion y destruccion
|
|
|
|
---
|
|
|
|
## 2. Estado de la Cuenta (Basado en Credenciales Proporcionadas)
|
|
|
|
### 2.1 Acceso Verificado
|
|
| Dato | Valor |
|
|
|------|-------|
|
|
| Cuenta AWS | 668889063715 |
|
|
| Region | mx-central-1 |
|
|
| Tipo de credencial | Temporal (Session Token) |
|
|
| Acceso requerido | IAM con permisos para EC2, RDS, S3, VPC, CloudFront, Route53, Lambda, IAM, DynamoDB |
|
|
|
|
### 2.2 Recursos Esperados en Cuenta
|
|
Segun el usuario, la cuenta ya cuenta con:
|
|
- **Route53**: Subdominio configurado (a verificar)
|
|
- **VPC**: Posiblemente VPC default o existentes (a verificar)
|
|
|
|
### 2.3 Verificacion Recomendada (NO EJECUTADA)
|
|
Antes de desplegar, ejecutar manualmente:
|
|
|
|
```bash
|
|
# Verificar identidad
|
|
aws sts get-caller-identity
|
|
|
|
# Listar regiones disponibles
|
|
aws account list-regions
|
|
|
|
# VPCs existentes
|
|
aws ec2 describe-vpcs
|
|
|
|
# Buckets S3
|
|
aws s3 ls
|
|
|
|
# Certificados ACM
|
|
aws acm list-certificates --region mx-central-1
|
|
aws acm list-certificates --region us-east-1
|
|
|
|
# Instancias EC2
|
|
aws ec2 describe-instances
|
|
|
|
# RDS
|
|
aws rds describe-db-instances
|
|
|
|
# Route53
|
|
aws route53 list-hosted-zones
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Recursos a Crear
|
|
|
|
### 3.1 Infraestructura de Red
|
|
| Recurso | Nombre | CIDR / Configuracion |
|
|
|---------|--------|---------------------|
|
|
| VPC | sacc4-test-vpc | 10.3.0.0/16 |
|
|
| Subnet Publica 1 | sacc4-test-public-1 | 10.3.1.0/24 (mx-central-1a) |
|
|
| Subnet Publica 2 | sacc4-test-public-2 | 10.3.2.0/24 (mx-central-1b) |
|
|
| Subnet Privada 1 | sacc4-test-private-1 | 10.3.10.0/24 (mx-central-1a) |
|
|
| Subnet Privada 2 | sacc4-test-private-2 | 10.3.11.0/24 (mx-central-1b) |
|
|
| Internet Gateway | sacc4-test-igw | Asociado a VPC |
|
|
| Route Table Publica | sacc4-test-public-rt | 0.0.0.0/0 -> IGW |
|
|
|
|
**Razonamiento del CIDR:**
|
|
- Produccion usa `10.2.0.0/16`
|
|
- Test usa `10.3.0.0/16` para evitar solapamiento
|
|
- Si existen otras VPCs, verificar que no usen `10.3.0.0/16`
|
|
|
|
### 3.2 Computo (EC2)
|
|
| Recurso | Nombre | Configuracion |
|
|
|---------|--------|---------------|
|
|
| Instancia EC2 | sacc4-test-api-prod | t3.small, Ubuntu 22.04 |
|
|
| Elastic IP | sacc4-test-eip | Asociada a EC2 |
|
|
| Key Pair | sacc4-test-thoth | Llave publica de thoth |
|
|
| Volume Root | - | 8 GB gp2, encriptado |
|
|
|
|
**Puertos abiertos (Security Group EC2):**
|
|
| Puerto | Origen | Proposito |
|
|
|--------|--------|-----------|
|
|
| 22 | VPC CIDR o IPs especificas | SSH |
|
|
| 80 | 0.0.0.0/0 | HTTP |
|
|
| 443 | 0.0.0.0/0 | HTTPS |
|
|
| 8080-8085 | VPC CIDR | Microservicios API |
|
|
|
|
### 3.3 Base de Datos (RDS)
|
|
| Recurso | Nombre | Configuracion |
|
|
|---------|--------|---------------|
|
|
| Instancia RDS | sacc4-test-db-prod | MariaDB 10.11.16 |
|
|
| Clase | db.t3.micro | 1 vCPU, 1 GB RAM |
|
|
| Almacenamiento | 20 GB | gp2, encriptado |
|
|
| DB Name | ccsoft_sacc4_test | |
|
|
| Master User | sacc_admin_test | |
|
|
| App User | sacc_app_user | (creado por user data) |
|
|
| Backup | 7 dias | Ventana 03:00-04:00 |
|
|
|
|
**Security Group RDS:**
|
|
| Puerto | Origen | Proposito |
|
|
|--------|--------|-----------|
|
|
| 3306 | Security Group EC2 | MariaDB desde API |
|
|
|
|
### 3.4 Frontend (S3 + CloudFront)
|
|
| Recurso | Nombre | Configuracion |
|
|
|---------|--------|---------------|
|
|
| Bucket S3 | sacc4-frontend-test-668889063715 | Privado, OAC |
|
|
| CloudFront | Auto-generado | PriceClass_100, HTTPS |
|
|
| OAC | sacc4-test-oac | SigV4, S3 origin |
|
|
|
|
### 3.5 DNS (Route53)
|
|
| Recurso | Nombre | Valor |
|
|
|---------|--------|-------|
|
|
| Hosted Zone | ccsoft.mx (existente) | Data source |
|
|
| Record A | test-sacc.ccsoft.mx | Alias a CloudFront |
|
|
| Record A | api.test-sacc.ccsoft.mx | IP publica EC2 |
|
|
|
|
**Nota:** Se asume que existe una hosted zone para `ccsoft.mx` o subdominio. Si no existe, crearla primero o usar otro dominio.
|
|
|
|
### 3.6 Scheduling (Lambda + EventBridge)
|
|
| Recurso | Nombre | Proposito |
|
|
|---------|--------|-----------|
|
|
| Lambda Start | sacc4-test-start-instances | Iniciar EC2/RDS L-V 8AM |
|
|
| Lambda Stop | sacc4-test-stop-instances | Detener EC2/RDS L-V 7PM |
|
|
| Schedule Start | sacc4-test-start-morning | cron(0 13 ? * MON-FRI *) |
|
|
| Schedule Stop | sacc4-test-stop-evening | cron(0 0 ? * TUE-SAT *) |
|
|
| IAM Role Lambda | sacc4-test-lambda-scheduler-role | Permisos EC2/RDS |
|
|
| IAM Role Scheduler | sacc4-test-eventbridge-scheduler-role | Invocar Lambda |
|
|
|
|
**Horario (America/Mexico_City):**
|
|
- Inicio: 8:00 AM L-V (13:00 UTC)
|
|
- Apagado: 7:00 PM L-V (00:00 UTC+1)
|
|
|
|
### 3.7 Estado Terraform
|
|
| Recurso | Nombre | Proposito |
|
|
|---------|--------|-----------|
|
|
| Bucket S3 | sacc4-terraform-state-test-668889063715 | Estado remoto |
|
|
| Tabla DynamoDB | sacc4-terraform-locks-test-668889063715 | Bloqueo de estado |
|
|
|
|
---
|
|
|
|
## 4. Dependencias y Orden de Creacion
|
|
|
|
```
|
|
1. Backend Terraform (S3 + DynamoDB)
|
|
|
|
|
2. VPC (VPC, Subnets, IGW, Route Tables)
|
|
|
|
|
3. Security Groups (EC2, RDS)
|
|
|
|
|
4. IAM Roles (Lambda, EC2, Scheduler)
|
|
|
|
|
5. RDS (Subnet Group, Instance)
|
|
|
|
|
6. EC2 (Instance, EIP, Key Pair)
|
|
|
|
|
7. S3 + CloudFront (Bucket, Distribution, OAC)
|
|
|
|
|
8. Route53 (Records A)
|
|
|
|
|
9. Lambda + EventBridge (Functions, Schedules)
|
|
|
|
|
10. Ansible (Configuracion servidor)
|
|
```
|
|
|
|
**Dependencias criticas:**
|
|
- EC2 depende de VPC, Security Groups, IAM
|
|
- RDS depende de VPC, Security Groups
|
|
- CloudFront depende de S3
|
|
- Route53 depende de EC2 (IP) y CloudFront (dominio)
|
|
- Lambda depende de EC2 (ID) y RDS (ID)
|
|
|
|
---
|
|
|
|
## 5. Costos Estimados (Mensual)
|
|
|
|
| Recurso | Especificacion | Costo Mensual (USD) |
|
|
|---------|---------------|---------------------|
|
|
| EC2 t3.small | 11h/dia (scheduling) | ~$5.25 |
|
|
| RDS db.t3.micro | 11h/dia (scheduling) | ~$4.54 |
|
|
| S3 | ~1 GB storage | ~$0.02 |
|
|
| CloudFront | 100GB transferencia | ~$2.00 |
|
|
| Route53 | 1 hosted zone + queries | ~$0.50 |
|
|
| Lambda | 2 funciones, poca ejecucion | ~$0.00 |
|
|
| Data Transfer | Salida a internet | ~$1.00 |
|
|
| **TOTAL** | | **~$13.31** |
|
|
|
|
**Notas de costos:**
|
|
- Con scheduling (apagado fuera de horario laboral): ~60% de ahorro
|
|
- Sin scheduling (24/7): ~$35-40/mes
|
|
- Los costos son estimados y pueden variar
|
|
- CloudFront: PriceClass_100 (Norte America y Europa)
|
|
|
|
---
|
|
|
|
## 6. Riesgos y Mitigaciones
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
|
|--------|-------------|---------|------------|
|
|
| Conflicto de CIDR con VPC existente | Media | Alto | Verificar `aws ec2 describe-vpcs` antes. Usar 10.3.0.0/16 |
|
|
| Nombre de bucket S3 ya existe | Alta | Medio | Usar sufijo de cuenta ID: sacc4-frontend-test-668889063715 |
|
|
| Falta de permisos IAM | Media | Alto | Verificar politicas antes. Script valida credenciales |
|
|
| Route53 zone no existe | Media | Alto | Verificar con `aws route53 list-hosted-zones`. Ajustar dominio |
|
|
| AMI no disponible en mx-central-1 | Baja | Alto | Verificar AMI antes o usar data source `aws_ami` |
|
|
| Credenciales temporales expiran | Media | Medio | Renovar session token si es necesario |
|
|
| Costos inesperados | Baja | Medio | Scheduling habilitado por defecto. Monitorear Billing |
|
|
| Destruccion accidental | Baja | Alto | Script de destruccion requiere confirmacion doble |
|
|
|
|
---
|
|
|
|
## 7. Conflictos Potenciales con Recursos Existentes
|
|
|
|
### 7.1 Nombres Unicos Globales
|
|
Los siguientes recursos requieren nombres unicos globalmente en AWS:
|
|
- **S3 Buckets**: `sacc4-frontend-test-668889063715` (incluye ID de cuenta)
|
|
- **DynamoDB Tables**: `sacc4-terraform-locks-test-668889063715`
|
|
|
|
### 7.2 Nombres Unicos por Cuenta
|
|
- **EC2 Key Pairs**: `sacc4-test-thoth`
|
|
- **IAM Roles**: `sacc4-test-lambda-scheduler-role`, `sacc4-test-eventbridge-scheduler-role`
|
|
- **RDS Instances**: `sacc4-test-db-prod`
|
|
- **Lambda Functions**: `sacc4-test-start-instances`, `sacc4-test-stop-instances`
|
|
|
|
### 7.3 Estrategia de Evitacion
|
|
1. Todos los recursos usan prefijo `sacc4-test-*`
|
|
2. Bucket S3 incluye ID de cuenta
|
|
3. Tabla DynamoDB incluye ID de cuenta
|
|
4. Script `create-test-environment.sh` verifica conflictos antes de crear
|
|
|
|
---
|
|
|
|
## 8. Checklist Pre-Despliegue
|
|
|
|
### 8.1 Verificacion Manual (Obligatoria)
|
|
- [ ] Ejecutar `aws sts get-caller-identity` y confirmar cuenta 668889063715
|
|
- [ ] Verificar region `mx-central-1`
|
|
- [ ] Listar VPCs existentes: `aws ec2 describe-vpcs`
|
|
- [ ] Verificar CIDR 10.3.0.0/16 no este en uso
|
|
- [ ] Listar hosted zones Route53: `aws route53 list-hosted-zones`
|
|
- [ ] Verificar dominio `test-sacc.ccsoft.mx` este disponible
|
|
- [ ] Listar certificados ACM: `aws acm list-certificates --region us-east-1`
|
|
|
|
### 8.2 Preparacion Local
|
|
- [ ] Instalar AWS CLI v2
|
|
- [ ] Instalar Terraform >= 1.5.0
|
|
- [ ] Instalar Ansible (opcional, para configuracion)
|
|
- [ ] Generar par de llaves SSH: `ssh-keygen -t ed25519 -f ~/.ssh/sacc4-test-key`
|
|
- [ ] Copiar `terraform.tfvars.example` a `terraform.tfvars`
|
|
- [ ] Completar todas las variables en `terraform.tfvars`
|
|
- [ ] Cambiar contrasena RDS por una segura
|
|
|
|
### 8.3 Configuracion de Credenciales
|
|
```bash
|
|
export AWS_ACCESS_KEY_ID=ASIAZXPHFEERTQJHLDJC
|
|
export AWS_SECRET_ACCESS_KEY=Xa58LDQt+WOBgGVQhwoYbATz/sk2G80RpIcjvKuo
|
|
export AWS_SESSION_TOKEN=IQoJb3JpZ2luX2VjECYaDG14LWNlbnRyYWwtMSJHMEUCIQCDI8BwOq2g1G/g7bNRoTJlolwJas0IxPU0PcLMFWbVEgIgJfC5/CoCt9rL6xGrC3hUtjzXb/SHk5owM6ImoK4GKdYq9wIIFhAAGgw2Njg4ODkwNjM3MTUiDMlcZz9jDpE28Mvr3yrUAihBZtNJ4vZs5iU16XgogqOWzA54lBjSnFsrq17u30F88mQL3sKNns7jGjgfHDIoPy0MmyA+cWd+q9DCtuZr+DUNS81n0DGDtI+oCkPfAmlkhHCtskzoyUzMb0XSRBIv2IUDqUqsOps/QBiTZcqJ3JIYeUaDntA1ZHCYCTH1C2hsgkznkPgwQE9/UrVmkkwoWAfRlln9DYpUpH5x/y+Cmzd5a7W/bhCYBF6vYbPvhr5Zr1t8EKcDPz4ANX+OFaa6v7AL2aHDuyVPiHU/YDXD6uSeTlfpLFYuQvx2HdBeHvHNyMcPpAsQ8c4YflzJGZmPBqnXrnpkOZBhNqjxlHFjXxSlNEv0X7ceKwOPCz4TLHA+cS18KkGKARzfVSfCeCmhQ+5LS8uCGdDV6u3tTUHY/rFyZ6uKVWrbl0Ky9apJRl2TOlXwQd6NyHsw2PkUgacitEfO0vswieX30AY6pQHT7j02zLvQClYhLqpyt+EHGVzlvRNN0dH92RRtQGtryQ+er5YUatzrth8VyBs659qLeIf1bmrCBBWpvJRDIsRAxnWU3Wq3nBqwxgFshaoPS8j99g9Q8Iky0MahSKEi30CLNaFZh6k8PoqQeGUrJLmT7cUH0gP9u+J+jJoPHb9568+yDLtCItb2p0q4JejISOKXniMKm6nja0/dJwl1uYMMtEalvVk=
|
|
export AWS_DEFAULT_REGION=mx-central-1
|
|
```
|
|
|
|
---
|
|
|
|
## 9. Arquitectura del Entorno Test
|
|
|
|
```
|
|
+------------------+
|
|
| Usuario |
|
|
+--------+---------+
|
|
|
|
|
v
|
|
+------------------+ +----------+-----------+
|
|
| Route53 |<----------| CloudFront CDN |
|
|
| (test-sacc... ) | | (SSL via ACM) |
|
|
+------------------+ +----------+-----------+
|
|
|
|
|
+---------------------+---------------------+
|
|
| |
|
|
v v
|
|
+----------------+ +------------------+
|
|
| S3 Bucket | | EC2 Instance |
|
|
| (Frontend | | (Backend API |
|
|
| React) | | Spring Boot) |
|
|
+----------------+ +--------+---------+
|
|
|
|
|
v
|
|
+------------------+
|
|
| Nginx (reverse |
|
|
| proxy) |
|
|
+--------+---------+
|
|
|
|
|
v
|
|
+------------------+
|
|
| RDS MariaDB |
|
|
| (Base de datos) |
|
|
+------------------+
|
|
^
|
|
|
|
|
+------------------+
|
|
| Lambda Scheduler|
|
|
| (Start/Stop) |
|
|
+------------------+
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Scripts Generados
|
|
|
|
| Script | Ruta | Proposito |
|
|
|--------|------|-----------|
|
|
| **create-test-environment.sh** | `iac-duplicate/scripts/` | Crea el entorno completo |
|
|
| **validate-environment.sh** | `iac-duplicate/scripts/` | Valida funcionamiento |
|
|
| **destroy-test-environment.sh** | `iac-duplicate/scripts/` | Destruye de forma segura |
|
|
|
|
### Uso de Scripts
|
|
|
|
```bash
|
|
# 1. Configurar credenciales
|
|
export AWS_ACCESS_KEY_ID=...
|
|
export AWS_SECRET_ACCESS_KEY=...
|
|
export AWS_SESSION_TOKEN=...
|
|
export AWS_DEFAULT_REGION=mx-central-1
|
|
|
|
# 2. Crear entorno
|
|
cd iac-duplicate/scripts
|
|
./create-test-environment.sh
|
|
|
|
# 3. Validar entorno
|
|
./validate-environment.sh --full
|
|
|
|
# 4. Destruir entorno (cuando ya no se necesite)
|
|
./destroy-test-environment.sh
|
|
```
|
|
|
|
---
|
|
|
|
## 11. Diferencias con Produccion
|
|
|
|
| Aspecto | Produccion | Test |
|
|
|---------|-----------|------|
|
|
| Cuenta AWS | 523761210517 | 668889063715 |
|
|
| CIDR VPC | 10.2.0.0/16 | 10.3.0.0/16 |
|
|
| Dominio | prod-sacc.ccsoft.mx | test-sacc.ccsoft.mx |
|
|
| Scheduling | L-V 8AM-7PM | L-V 8AM-7PM |
|
|
| Instancia EC2 | t3a.medium | t3.small |
|
|
| Certificado SSL | Let's Encrypt + ACM | CloudFront default (inicial) |
|
|
| Backup RDS | 7 dias | 7 dias |
|
|
|
|
---
|
|
|
|
## 12. Notas y Advertencias
|
|
|
|
1. **NO APLICAR EN PRODUCCION**: Estos scripts estan disenados exclusivamente para el entorno de test en cuenta 668889063715.
|
|
|
|
2. **Credenciales Temporales**: Las credenciales proporcionadas incluyen un session token, lo que indica que son temporales y expiraran. Renovar segun sea necesario.
|
|
|
|
3. **Costos**: Aunque el scheduling reduce costos significativamente, monitorear la facturacion de AWS para evitar cargos inesperados.
|
|
|
|
4. **SSL/TLS**: En produccion se usa Let's Encrypt para la API y ACM para CloudFront. En test, inicialmente CloudFront usara el certificado default. Para produccion-like, solicitar certificado ACM en us-east-1.
|
|
|
|
5. **Datos Sensibles**: El archivo `terraform.tfvars` contiene contrasenas. NO commitear en git. Usar `.gitignore` o AWS Secrets Manager para entornos reales.
|
|
|
|
6. **AMI**: La AMI `ami-0f553e2869648134e` es para Ubuntu 22.04 en mx-central-1. Verificar disponibilidad antes de desplegar.
|
|
|
|
---
|
|
|
|
## 13. Proximos Pasos
|
|
|
|
1. **Verificar cuenta**: Ejecutar comandos AWS CLI de la seccion 2.3
|
|
2. **Preparar terraform.tfvars**: Completar todas las variables
|
|
3. **Generar llaves SSH**: Crear par de llaves para acceso EC2
|
|
4. **Ejecutar create-test-environment.sh**: Crear la infraestructura
|
|
5. **Desplegar aplicacion**: Subir JARs de microservicios a EC2
|
|
6. **Configurar SSL**: Solicitar certificado ACM para dominio custom
|
|
7. **Validar**: Ejecutar validate-environment.sh
|
|
|
|
---
|
|
|
|
*Documento generado automaticamente - 2026-06-01*
|
|
**Cómputo Contable Soft SA de CV - Proyecto SACC4**
|