🔑AWS Cognito + ⚡ Lambda triggers
AWS Cognito es un servicio de autenticacin, autorizacin y gestin de usuarios, ofrecido Amazon complement administrado, facilitando la integracin con aplicaciones Web y Mviles, permitiendo incluso conectarse con distintos IDP (Identity Provider) y login social, entre otros. AWS Cognito es compatible con Open ID Connect ( OIDC), OAuth 2.0, SAML 2.0, JSON Web Tokens (JWT).
Algunas de las caracteristicas que ofrece AWS Cognito no son 100% customizables, como es el caso del UI (las pantallas de Sing In, Sing Up, recuperar contrasea) entre otras, no obstante en las ltimas ediciones de los AWS re:invent ha recibido varias actualizaciones y mejoras en las caractersticas que ofrece el servicio.
En este caso, sin embargo, vamos a ver con un ejemplo, una caracterstica interesante que permite extender los flujos existentes y agregar nuevos workflows de trabajo a AWS cognito con lambda triggers.
Desplegando AWS cognito
Debido a la dependencia del Stack del Cognito con las Lambdas que se ejecutaran antes eventos, necesitamos dos despliegues para identificar los arn de las lambas y el Cognito, luego de esto agregamos la referencias al Cognito de las lambas y a las lambdas los permisos del Cognito como muestro a continuacin
El AWS cognito que desplegamos para este ejemplo tiene una aplicacion que ademas permite hacer pruebas con Postman, a continuacion la configuracion que pueden encontrar completa en el repositorio que acompaa este post: Repositorio con el cdigo fuente
...Resources: # Create a Cognito User pool for user management OlcortesbUserPool: Type: AWS::Cognito::UserPool Properties: Policies: PasswordPolicy: MinimumLength: 8 AutoVerifiedAttributes: - email UsernameAttributes: - email...
Agregando las lambdas al cognito
En el cdigo inicial que subir al repositorio las lneas de LambdaConfig estarn comentaras, agregue los ARN de las lambas que contienen la lgica de los eventos que se describen. PresigUp y PostConfirmation
Resources: # Create a Cognito User pool for user management OlcortesbUserPool: Type: AWS::Cognito::UserPool Properties: Policies: PasswordPolicy: MinimumLength: 8 AutoVerifiedAttributes: - email UsernameAttributes: - email # LambdaConfig: # PreSignUp: arn:aws:lambda:eu-central-1:{account}:function:{name} # 3. Create an application for authentication # PostConfirmation: arn:aws:lambda:eu-central-1:{account}:function:{name}
Las posibles lambdas que podemos disparar los encontramos en la documentacin
PostAuthentication: String PostConfirmation: String PreAuthentication: String PreSignUp: String PreTokenGeneration: String PreTokenGenerationConfig:
Probando la configuracin bsica
La primera lambda, la PreSing, se lanza al momento de darse de alta en la plataforma,
En el Log que muestro a continuacin, corresponde al Log de la landa indicando que un usuario est intentando darse de alta
cognito enva un cdigo al correo para validarlo:
Al momento de colocar el cdigo correcto se dispara la siguiente lambda y el usuario est finalmente creado
Se puede observar el usuario validado
Descripcin del Cdigo
El cdigo del presente ejemplo est subido a este repositorio:
aws-cognito-lambda-triggers/ app/ # Application Lambda function app.js # Simple handler that returns the event postconfirmation/ # Post-confirmation Lambda trigger postConfirmation.mjs # Handler for post-confirmation events presignup/ # Pre-signup Lambda trigger preSignUp.mjs # Handler for pre-signup events .gitignore # Git ignore file cognito.yaml # Cognito resources CloudFormation template README.md # Project documentation samconfig.toml # SAM CLI configuration sample.samconfig.toml # Sample SAM configuration template.yaml # Main CloudFormation template
Conclusiones
Se despleg un cognito con dos lambdas triggers configuradas
S probo el flujo de Sign Up de un usuario validando los puntos importantes en el proceso de alga
Dentro de estas lambdas se puede agregar la lgica que los flujos que estamos trabajando necesiten, agregando validaciones, funcionalidades, actualizacin de campos de usuario y dems caractersticas que permite la versatilidad de AWS Lambda
El cdigo de las lambdas est solo de ejemplo para entender el comportamiento, se puede agregar el cdigo que se desee como se deja explicado en el rearme con ejemplos.
Referencias
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-authentication.html
https://github.com/olcortesb/aws-cognito-lambda-triggers
Artículo original: 🔑AWS Cognito + ⚡ Lambda triggers