- 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
15 KiB
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:
# 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/16para 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
- Todos los recursos usan prefijo
sacc4-test-* - Bucket S3 incluye ID de cuenta
- Tabla DynamoDB incluye ID de cuenta
- Script
create-test-environment.shverifica conflictos antes de crear
8. Checklist Pre-Despliegue
8.1 Verificacion Manual (Obligatoria)
- Ejecutar
aws sts get-caller-identityy 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.mxeste 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.exampleaterraform.tfvars - Completar todas las variables en
terraform.tfvars - Cambiar contrasena RDS por una segura
8.3 Configuracion de Credenciales
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
# 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
-
NO APLICAR EN PRODUCCION: Estos scripts estan disenados exclusivamente para el entorno de test en cuenta 668889063715.
-
Credenciales Temporales: Las credenciales proporcionadas incluyen un session token, lo que indica que son temporales y expiraran. Renovar segun sea necesario.
-
Costos: Aunque el scheduling reduce costos significativamente, monitorear la facturacion de AWS para evitar cargos inesperados.
-
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.
-
Datos Sensibles: El archivo
terraform.tfvarscontiene contrasenas. NO commitear en git. Usar.gitignoreo AWS Secrets Manager para entornos reales. -
AMI: La AMI
ami-0f553e2869648134ees para Ubuntu 22.04 en mx-central-1. Verificar disponibilidad antes de desplegar.
13. Proximos Pasos
- Verificar cuenta: Ejecutar comandos AWS CLI de la seccion 2.3
- Preparar terraform.tfvars: Completar todas las variables
- Generar llaves SSH: Crear par de llaves para acceso EC2
- Ejecutar create-test-environment.sh: Crear la infraestructura
- Desplegar aplicacion: Subir JARs de microservicios a EC2
- Configurar SSL: Solicitar certificado ACM para dominio custom
- Validar: Ejecutar validate-environment.sh
Documento generado automaticamente - 2026-06-01
Cómputo Contable Soft SA de CV - Proyecto SACC4