2026-09-02 23:47:27 -04:00
2026-09-02 23:47:27 -04:00
2026-09-02 23:47:27 -04:00
2026-09-02 23:47:27 -04:00

iot-cognito

Resumen

Este proyecto crea la infraestructura de identidad y autenticación para un proyecto IoT educativo usando Amazon Cognito.

El objetivo es proporcionar un User Pool y un App Client que puedan ser consumidos por otros proyectos (por ejemplo, una API y un frontend Vue) sin contener lógica de aplicación, Lambdas, APIs ni almacenamiento de datos.

Qué problema resuelve

Proporciona una fuente centralizada de usuarios y credenciales (Cognito User Pool) y un App Client para una SPA (Vue) de modo que otras aplicaciones puedan autenticarse y validar JWTs emitidos por Cognito.

Recursos que crea

  • AWS::Cognito::UserPool (iot-dashboard-users)
  • AWS::Cognito::UserPoolClient (iot-dashboard-vue)

Ambos recursos incluyen tags para facilitar identificación (Project: iot-project, Component: cognito, Environment: dev).

Outputs

El stack exporta los siguientes valores (Outputs + Exports):

  • UserPoolId
  • UserPoolClientId
  • UserPoolArn

Estos valores serán consumidos por los proyectos:

  • iot-lambda-dashboardApi
  • iot-front-dashboard

Validar el template

Usar el validador de CloudFormation:

aws cloudformation validate-template \
  --template-body file://template.yml

Desplegar el stack

Desplegar con AWS CLI. Este template no crea roles ni recursos IAM nombrados, por lo que no es necesario pasar CAPABILITY_NAMED_IAM.

aws cloudformation deploy \
  --template-file template.yml \
  --stack-name iot-cognito

Si el despliegue falla por permisos relacionados con IAM (no esperado para este template), añadir la capability requerida:

aws cloudformation deploy \
  --template-file template.yml \
  --stack-name iot-cognito \
  --capabilities CAPABILITY_NAMED_IAM

Obtener los Outputs

Para ver los Outputs directamente desde el stack:

aws cloudformation describe-stacks \
  --stack-name iot-cognito \
  --query "Stacks[0].Outputs" --output table

O listar los Exports (útil si otro stack los importa):

aws cloudformation list-exports --query "Exports[?starts_with(Name, 'iot-cognito')]==[] || Exports" --output table

Eliminar el stack

aws cloudformation delete-stack --stack-name iot-cognito

Notas de uso

  • El App Client creado es público (GenerateSecret: false) y está pensado para una SPA (Vue). No se incluye client secret.
  • No se crean Lambdas, API Gateway, S3, DynamoDB ni otros recursos fuera del alcance de identidad/usuario.
  • Mantener este proyecto simple y didáctico facilita que los alumnos entiendan Cognito: User Pools, App Clients, credenciales y JWTs.

Cómo consumir los valores desde otros stacks

En otros templates CloudFormation se puede usar Fn::ImportValue con los nombres exportados. Por ejemplo:

Parameters:
  CognitoUserPoolId:
    Type: String
    Default: !ImportValue "iot-cognito-UserPoolId"

Ajustar el nombre del export si el stack se despliega con otro nombre distinto a iot-cognito.

Contacto

Proyecto educativo preparado para ser utilizado por los ejercicios de la materia.

S
Description
No description provided
Readme
31 KiB