You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sistema de respaldo para registros de plantas mineras implementado con SQS, SNS, Typescript, S3, DynamoDB, Api Gateway, Cloudwatch, Systems Manager Parameter Store, Serverless-Framework, Lambda, entre otros.
Importante: Hay alertas de seguridad de dependabot que apuntan contra el plugin "serverless-dynamodb-local". No aplicar parches de seguridad a dicho plugin, ya que la versión ^1.0.2 tiene problemas al momento de la creación de tablas y ejecución del servicio de dynamo. Se recomienda mantener la última versión estable ^0.2.40 con las alertas de seguridad generadas.
Instalamos Serverless Framework de forma global si es que aún no lo hemos realizado
npm install -g serverless
Verificamos la versión de Serverless instalada
sls -v
Instalamos todos los paquetes necesarios
npm i
Importante: Hay alertas de seguridad de dependabot que apuntan contra el plugin "serverless-dynamodb-local". No aplicar parches de seguridad a dicho plugin, ya que la versión ^1.0.2 tiene problemas al momento de la creación de tablas y ejecución del servicio de dynamo. Se recomienda mantener la última versión estable ^0.2.40 con las alertas de seguridad generadas.
El siguiente script configurado en el package.json del proyecto es el encargado de
Por defecto tendremos un serverless.ts, según el gusto y configuración se puede trabajar con el mismo, para este caso, se modifica a serverless.yml y se pasa la plantilla base.
Modificaremos la plantilla inicial. Cambiamos serverless.ts por serverless.yml para las configs estandarizadas.
Reemplazamos la plantila serverless.ts inicial por la siguiente como modelo (cambiar nombre, etc) según la creada...
Instalamos esbuild para el compilado entre js y ts
npm i serverless-esbuild
Instalamos el plugin para el uso de dynamodb en local (No el servicio de dynamoDB, este viene configurado en los archivos dentro de .dynamodb).
Importante: Hay alertas de seguridad de dependabot que apuntan contra el plugin "serverless-dynamodb-local". No aplicar parches de seguridad a dicho plugin, ya que la versión ^1.0.2 tiene problemas al momento de la creación de tablas y ejecución del servicio de dynamo. Se recomienda mantener la última versión estable ^0.2.40 con las alertas de seguridad generadas.
npm install serverless-dynamodb-local --save-dev
Agregamos el plugin dentro del serverless.yml
plugins:
- serverless-dynamodb-local
Instalamos el sdk client de dynamodb para las operaciones de db necesarias
npm install @aws-sdk/client-dynamodb
Instalamos el sdk lib de dynamodb para las operaciones de db necesarias
npm i @aws-sdk/lib-dynamodb
Debemos descargar el .jar junto con su config para ejecutar el servicio de dynamodb. Descargar aquí
Una vez descargado el .jar en formato .tar descomprimimos y copiamos todo su contenido dentro de la carpeta .dynamodb (La creamos a la misma altura que el directorio src, caso de no tenerla).
Usaremos git como control de versiones. Nos posicionamos en la app e inicializamos git
git init
Creamos el repositorio en github (sin readme) y agregamos la url del repositorio creado (ej: la siguiente)
Deberíamos esperar un output por consola con los siguiente servicios levantados cuando se ejecuta el comando anterior
> [email protected] start
> npm run serverless-offline
> [email protected] serverless-offline
> sls offline start
serverless-offline-ssm checking serverless version 3.31.0.
Dynamodb Local Started, Visit: http://localhost:8000/shell
DynamoDB - created table payments-table
etc.....
Ya tenemos una app funcional con una estructura inicial definida por Serverless-Framework. La aplicación queda deployada en http://localhost:4002 y podemos testear el endpoint declarado en el serverless desde postman
Aclaración : El resto de las modificaciones aplicadas sobre la plantilla inicial no se describen por temas de simplificación de doc. Para más info consultar el tutorial de Serverless-framework para el uso de servicios, plugins, etc.