2 · Obtener Cuentas Principales
Autor: Iker Acevedo¶
Fecha creacion: 2026-07-13
Estado: produccion
Lambda: ApiLambdaObtenerCuentasPrincipales¶
Accionador: Step Functions (Task)
AOT: No
Posición en el pipeline: 2 de 5
¿Qué hace?¶
Devuelve la lista de cuentas madre activas de Pancake, cada una con su token de acceso. Lee la colección PancakeCuentasPrincipales, filtra por estado: "Activo" y proyecta solo lo necesario para el primer Map: el id de la cuenta y su token.
Cada cuenta madre puede tener muchas páginas asociadas; esta lambda es el punto de partida para recorrerlas.
Request¶
No recibe datos propios. En el Step Function se ejecuta con el estado que traiga el pipeline (su salida se guarda en $.cuentas).
Response¶
Un array de cuentas activas:
[
{ "cuenta_id": "10001", "token_acceso": "eyJhbGciOiJ..." },
{ "cuenta_id": "10002", "token_acceso": "eyJhbGciOiJ..." }
]
| Campo | Tipo | Descripción |
|---|---|---|
cuenta_id |
string |
Identificador de la cuenta madre |
token_acceso |
string |
Token de la cuenta (se usa en la lambda 3 para listar sus páginas) |
En el Step Function esta salida se guarda en
$.cuentasy alimenta el 1erMap(una iteración por cuenta madre).
Flujo interno¶
FunctionHandler (Function.cs)
-> ObtenerCuentasPrincipalesUseCase.EjecutarAsync()
-> ICuentasRepository.ObtenerActivasAsync()
-> MongoDB: PancakeCuentasPrincipales
Filter.Eq(estado, "Activo")
Proyección -> { cuenta_id, token_acceso }
-> [RESULT] IReadOnlyList<CuentaPrincipal>
Arquitectura Clean Architecture¶
ApiLambdaObtenerCuentasPrincipales/
├── Function.cs
├── Dominio/
│ └── Entidades/
│ └── CuentaPrincipal.cs ← { cuenta_id, token_acceso }
├── Aplicacion/
│ ├── CasosUso/
│ │ └── ObtenerCuentasPrincipalesUseCase.cs
│ └── Interfaces/
│ └── Repositorios/
│ └── ICuentasRepository.cs ← Contrato del repositorio
└── Infraestructura/
└── Repositorio/
└── DocumentRepository.cs ← Acceso a MongoDB
Variables de entorno¶
| Variable | Descripción | Valor ejemplo |
|---|---|---|
CADENA_CONEXION |
Cadena de conexión MongoDB (cifrada AES-256-ECB) | String cifrado |
DATABASE_NAME |
Nombre de la base de datos MongoDB | "LogighoDB" |
Configuración Lambda¶
| Parámetro | Valor |
|---|---|
| Runtime | dotnet8 |
| Handler | ApiLambdaObtenerCuentasPrincipales::ApiLambdaObtenerCuentasPrincipales.Function::FunctionHandler |
| Memory | 256 MB |
| Timeout | 15 segundos |
| Architecture | x86_64 |
Colección PancakeCuentasPrincipales¶
{
"_id": "10001",
"nombre": "Cuenta Principal Norte",
"tokenAcceso": "eyJhbGciOiJ...",
"estado": "Activo",
"fechaCreacion": "2026-07-01",
"fechaActualizacion": "2026-07-10"
}
Solo las cuentas con estado: "Activo" entran al pipeline. Para "apagar" una cuenta basta con cambiar su estado en MongoDB — sin redesplegar.
Historial de cambios¶
| Fecha | Autor | Cambio |
|---|---|---|
| 2026-07-13 | Iker Acevedo | Creación. Lectura de cuentas madre activas desde PancakeCuentasPrincipales. |
Observaciones¶
- El token viaja en texto (tal como está en la colección); el consumo posterior (lambda 3) lo pone en la query de Pancake, nunca se loguea.
- Apagar/prender una cuenta es una operación de datos (
estado), no de código.