Modelo mental
Cognito es dos productos con un nombre, y elegir el equivocado es el primer error del servicio:
| User pool | Identity pool | |
|---|---|---|
| Qué es | un directorio de usuarios | un intercambiador de credenciales |
| Qué te da | tokens JWT | credenciales temporales de AWS |
| Para qué | que tu API sepa quién llama | que el cliente hable con S3 o DynamoDB directamente |
| Lo necesitas si | tienes usuarios | el navegador va a firmar peticiones a AWS |
La mayoría de las aplicaciones solo necesitan un user pool: el usuario se autentica, recibe un JWT, y API Gateway lo valida con un autorizador. El identity pool solo hace falta cuando el cliente tiene que llamar a un servicio de AWS directamente — y suele ser mejor evitarlo, porque reparte permisos de AWS a navegadores.
La factura no depende de tu tráfico
Cognito cobra por usuario activo mensual. Un usuario cuenta si en el mes hay una operación de identidad suya: alta, confirmación, inicio de sesión o respuesta a un desafío. Las operaciones que autorizas con un token de acceso ya emitido no suman.
Eso tiene dos consecuencias prácticas: la factura es muy predecible —crece con tu producto, no con tus picos— y es indiferente a que un usuario entre una vez o mil. La importación masiva por CSV, además, no cuenta como actividad.
El esquema que no se puede rehacer
Un user pool admite 50 atributos personalizados, con nombres de 20 caracteres, y ese límite no se amplía. Sumado a que evolucionar el esquema de un pool en producción es incómodo, la conclusión práctica es clara: guarda en Cognito lo mínimo para autenticar —identificador, email, poco más— y el perfil de usuario en tu propia base de datos, donde puedes cambiarlo.
Cómo te factura
| Concepto | Cómo se paga |
|---|---|
| Usuarios activos mensuales | por MAU, con tramos decrecientes |
| MAU federados con SAML/OIDC | tarifa propia, más cara |
| Capa gratuita | un número generoso de MAU al mes |
| SMS para MFA | aparte, y no es barato |
La regla mental: pagas por personas, no por peticiones. Es de los pocos servicios de AWS donde eso es cierto, y hace que el coste sea fácil de proyectar desde el plan de negocio en vez de desde la arquitectura.
Los MAU federados con SAML u OIDC —el caso empresarial— tienen tarifa propia y bastante más alta. Si vendes a empresas con SSO, esa línea es la que crece.
Cuándo NO usarlo
- Necesitas control fino sobre el flujo de autenticación. Cognito es configurable dentro de sus carriles; salirse de ellos significa pelearse con triggers Lambda para cosas que en otro proveedor son una casilla.
- El perfil de usuario es rico y cambia. Cincuenta atributos con nombres de veinte caracteres no dan para un dominio de verdad.
- Ya tienes un directorio. Si la fuente de verdad es otra, Cognito añade una copia que hay que sincronizar.
- Te importa mucho la experiencia de la UI alojada. Es funcional y personalizable hasta cierto punto; si el registro es parte del producto, probablemente quieras construirlo tú.
- Necesitas enviar muchos correos transaccionales. El email integrado son 50 al día por cuenta. Con SES configurado deja de ser problema, pero hay que hacerlo a conciencia.
Errores comunes
Meter el perfil de usuario en Cognito. Los 50 atributos personalizados y los 20 caracteres de nombre se agotan antes de lo que parece, y el esquema no es fácil de evolucionar. Cognito para autenticar, tu base de datos para el perfil.
Montar un identity pool sin necesitarlo. Si tu cliente llama a tu API y tu API llama a AWS, no hace falta. El identity pool reparte credenciales de AWS al navegador, que es una superficie que casi nadie quiere gestionar.
Ignorar el desafío múltiple. RespondToAuthChallenge tiene una cuota de
tres veces la de UserAuthentication. Si tu pool pide MFA más
autenticación de dispositivo, cada inicio de sesión gasta varias respuestas, y el
exceso se suma a la cuota de autenticación y estrangula antes de lo que
sugieren los números sueltos.
Validar el token llamando a Cognito. Un JWT se verifica localmente con las claves públicas del pool. Llamar al servicio en cada petición añade latencia y consume cuota sin ninguna necesidad.
Olvidar los 4 dominios personalizados por región. En una cuenta con varios entornos, ese número se alcanza antes de lo esperado.
Fuentes
Atributos personalizados, longitud de nombres y valores, usuarios y user pools,
app clients, proveedores de identidad, resource servers, dominios personalizados,
grupos, URLs de callback, scopes, identidades enlazadas, passkeys, contraseñas,
respuestas SAML, límite de 50 correos diarios y cuotas por categoría de
operación, incluido el factor 3× de RespondToAuthChallenge:
Quotas in Amazon Cognito.
La definición de usuario activo mensual y qué operaciones cuentan procede de esa
misma página. Los importes proceden de la página de precios de AWS, que se
renderiza dinámicamente y no pudo citarse literalmente.