Es un servicio que permite asignar una identidad a usuarios que no están creados en IAM, para que tengan determinados permisos y que puedan interactuar con nuestro servicio/aplicación.
Cognito User Pools
Ofrece funcionalidad de autenticación para usuarios de aplicaciones, ya que se integra con API Gateway y con ALB. Es como crear una base de datos serverless para los usuarios de una web o aplicación:
- Login con usuario y contraseña
- Permite resetear la password
- Verificación de Email y número de teléfono
- MFA
- Federated Identities: de Facebook, Google, SAML, …
- Permite bloquear usuarios si sus credenciales han sido comprometidas
- Envía un JSON Web Token (JWT) como respuesta a la operación de login

Cognito Identity Pools (Federated Identity)
En este caso, se obtienen identidades para que los usuarios tengan credenciales temporales de AWS:
- Incluye proveedores de autenticación (Facebook, Google, Amazon, Apple, …)
- También pueden ser usuarios de Amazo Cognito User Pool
- También OpenId Connect Providers y SAML Identity Providers
- También Developer Authenticated Identities
- Permite acceso para usuarios no autenticados (guest)
Una vez que se autentican con alguno de los proveedores anteriores, acceden a servicios AWS directamente o a través de API Gateway:
- Las políticas IAM asociadas están definidas en Cognito
- Se pueden personalizar por user_id

Cognito Sync
Es un servicio obsoleto, reemplazado por AppSync.
- Almacena configuración, preferencias y estado de la aplicación.
- Sincronización entre dispositivos
- Funcionalidades disponibles offline
- Push Sync: notifica a todos los dispositivos cuando hay cambios de Identidad
- Cognito Streams: Streams de datos desde Cognito hacia Kinesis
- Cognito Events: ejecuta funciones Lambda en respuesta de eventos