|
||
---|---|---|
docs | ||
terraform | ||
.gitignore | ||
.pre-commit-config.yaml | ||
LICENSE.md | ||
README.md | ||
run.sh |
README.md
BSMSapp
Best Stock Management System application.
Descripción de los módulos
API Gateway
Construye una API REST que puede recibir requests POST, GET u OPTIONS. En el caso de GET, va directo a la lambda de lectura de la tabla (lambdaDB
). Por otro lado, en el caso de un POST, se encola en el SQS para luego ir a otra lambda (lambdaSQSDB
). Finalmente, el OPTIONS se utiliza para poder soportar y habilitar CORS
y que, por ende, funcionen correctamente los llamados a la API desde el sitio estático.
CloudFront
Funciona como CDN y realiza caché de la API y del S3 (que hostea el sitio estático).
Dynamo DB
Guarda los datos de los stocks de los usuarios. Tiene una tabla compuesta por id
(la partition key) y stock
.
Lambda
Definimos 2 lambdas. Una se encarga de realizar escrituras al DynamoDB
(lambdaSQSDB
) y la otra de realizar lecturas (lambdaDB
).
S3
Definimos 3 buckets. Uno para logs y dos para el frontend (el sitio estático en sí y uno www
que se redirecciona al primero).
SQS
Se encarga de encolar POSTs recibidos por la API. Luego, dispara la lambda correspondiente (en este caso lambdaSQSDB
).
VPC
Este módulo es externo. Se define en este toda la parte de networking que se detalla en el diagrama de la arquitectura (el cual se encuentra al final de este documento).
WAF
Protege la aplicación mediante 3 rules. Esto lo hace mediante la creación de un web ACL asociado a la distribución de CloudFront.
Descripción y referencia de funciones y meta-argumentos
Se debe notar que los links solo hacen referencia a la primera aparición en cada archivo.
Funciones
Junto a cada función se especifica para qué se usa.
-
file: devuelve como string el contenido del archivo
index.html
. Esto es utilizado para luego poder modificarlo (pues actúa como un template ya que tiene la variableENDPOINT
parametrizada) y usarlo. -
flatten: retorna una lista de una dimensión con los elementos de una lista de listas pues así lo espera el módulo.
-
format: arma el
path
para un filename dado. -
jsonencode: arma un string con un objeto JSON.
-
length: calcula el largo de
custom_origin_config
para saber si debe hacer unfor_each
sobre sus elementos, es decir, para saber si se lo definieron en el archivo que usa el módulo en cuestión. -
lookup: obtiene el valor de un mapa para una key.
-
replace: modifica el
path
para hacerlo válido. -
sha1: computa el
SHA1
del string de la configuración del apigw para saber si se necesita forzar el redeploy del módulo. -
trimsuffix: remueve substring del final de un string.
-
try: en caso de que no haya objetos, se utiliza un objeto vacío.
Meta-argumentos
-
count
-
depends_on
-
for_each
-
lifecycle
Diagrama de arquitectura deployada
Los servicios que deben ser corregidos (asociados a la entrega del TP3) son los numerados.

Demo

Rúbrica
Alumno | Legajo | Participación |
---|---|---|
Bellver, Ezequiel | 61268 | 50% |
Lo Coco, Santiago | 61301 | 50% |