Skip to content

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.

Notifications You must be signed in to change notification settings

andresWeitzel/BackupSystem_SQS_SNS_S3_DynamoDB_AWS

Repository files navigation

Index app

BackupSystem_SQS_SNS_S3_DynamoDB_AWS

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.


脥ndice 馃摐

Ver

Secci贸n 1) Descripci贸n, configuraci贸n y tecnolog铆as

Secci贸n 2) Endpoints y Ejemplos

Secci贸n 3) Prueba de funcionalidad y Referencias



Secci贸n 1) Descripci贸n, configuraci贸n y tecnolog铆as

1.0) Descripci贸n 馃敐

Ver

1.0.0) Descripci贸n General

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.

1.0.1) Descripci贸n Arquitectura y Funcionamiento


1.1) Ejecuci贸n del Proyecto 馃敐

Ver
  • Creamos un entorno de trabajo a trav茅s de alg煤n ide, podemos o no crear una carpeta ra铆z para el proyecto, nos posicionamos sobre la misma
cd 'projectRootName'
  • Una vez creado un entorno de trabajo a trav茅s de alg煤n ide, clonamos el proyecto
git clone https://github.com/andresWeitzel/BackupSystem_SQS_SNS_S3_DynamoDB_AWS
  • Instalamos la 煤ltima versi贸n LTS de Nodejs(v18)
  • 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
    • Levantar serverless-offline (serverless-offline)
 "scripts": {
   "serverless-offline": "sls offline start",
   "start": "npm run serverless-offline"
 },
  • Ejecutamos la app desde terminal.
npm start

1.2) Configuraci贸n del proyecto desde cero 馃敐

Ver
  • Creamos un entorno de trabajo a trav茅s de alg煤n ide, luego de crear una carpeta nos posicionamos sobre la misma
cd 'projectName'
  • Instalamos la 煤ltima versi贸n LTS de Nodejs(v18)
  • Instalamos Serverless Framework de forma global si es que a煤n no lo tenemos instalado.
npm install -g serverless
  • Verificamos la versi贸n de Serverless instalada
sls -v
  • Inicializamos un template ts de serverles
serverless create --template aws-nodejs-typescript
  • Comprobamos la versi贸n de typescript
tsc -v
  • Instalamos los paquetes necesarios
npm i
  • 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...
service: nombre

frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region : us-west-1
  memorySize: 512
  timeout : 10

plugins:


functions:
  functions:
    hello:
      handler: src/functions/hello/handler.ts
      events:
        - http:
            path: /test
            method: POST
            private: true  

custom:
  serverless-offline:
    httpPort: 4000
    lambdaPort: 4002    
  serverless-offline-ssm:
    stages:
      - dev
  dynamodb:
    stages:
      - dev
  • Instalamos serverless offline
npm i serverless-offline --save-dev
  • Agregamos el plugin dentro del serverless.yml
plugins:
  - serverless-offlline
  • Instalamos serverless ssm
npm i serverless-offline-ssm --save-dev
  • Agregamos el plugin dentro del serverless.yml
plugins:
  - serverless-offlline-ssm
  • Instalamos S3 local
npm install serverless-s3-local --save-dev
  • Agregamos el plugin dentro del serverless.yml
plugins:
  - serverless-s3-local
  • Instalamos el Cliente s3
npm install @aws-sdk/client-s3
  • 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)
git remote add origin https://github.com/andresWeitzel/BackupSystem_SQS_SNS_S3_DynamoDB_AWS
  • Traemos los cambios del remoto, agregamos los nuevos cambios en local, commitiamos y los subimos al repo.
git pull origin master
git add *
git commit -m "Add app config"
git push origin master
  • El siguiente script configurado en el package.json del proyecto es el encargado de Levantar serverless-offline (serverless-offline)
 "scripts": {
   "serverless-offline": "sls offline start",
   "start": "npm run serverless-offline"
 },
  • Ejecutamos la app desde terminal.
npm start
  • Deber铆amos esperar un output por consola con los siguiente servicios levantados cuando se ejecuta el comando anterior
> crud-amazon-dynamodb-aws@1.0.0 start
> npm run serverless-offline

> crud-amazon-dynamodb-aws@1.0.0 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.

1.3) Tecnolog铆as 馃敐

Ver
Tecnolog铆as Versi贸n Finalidad
SDK 4.3.2 Inyecci贸n Autom谩tica de M贸dulos para Lambdas
Serverless Framework Core v3 3.23.0 Core Servicios AWS
Systems Manager Parameter Store (SSM) 3.0 Manejo de Variables de Entorno
Amazon Api Gateway 2.0 Gestor, Autenticaci贸n, Control y Procesamiento de la Api
Amazon S3 3.0 Contenedor de Objetos
NodeJS 14.18.1 Librer铆a JS
VSC 1.72.2 IDE
Postman 10.11 Cliente Http
CMD 10 S铆mbolo del Sistema para linea de comandos
Git 2.29.1 Control de Versiones

Plugin Descripci贸n
Serverless Plugin Librer铆as para la Definici贸n Modular
serverless-offline Este complemento sin servidor emula AWS 位 y API Gateway en entorno local
serverless-offline-ssm busca variables de entorno que cumplen los par谩metros de SSM en el momento de la compilaci贸n y las sustituye desde un archivo
serverless-s3-local complemento sin servidor para ejecutar clones de S3 en local

Extensi贸n
Prettier - Code formatter
YAML - Autoformatter .yml (alt+shift+f)
TypeScript constructor generator - automatic constructor generator


Secci贸n 2) Endpoints y Ejemplos.

2.0) Endpoints y recursos 馃敐

Ver

2.1.0) Variables en Postman

Variable Initial value Current value
base_url http://localhost:4000 http://localhost:4000
x-api-key f98d8cd98h73s204e3456998ecl9427j f98d8cd98h73s204e3456998ecl9427j
bearer_token Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c



Secci贸n 3) Prueba de funcionalidad y Referencias.

3.0) Prueba de funcionalidad 馃敐

Ver

3.1) Referencias 馃敐

Ver

Api Gateway

Dynamodb installation

DynamoDB teor铆a

Dynamodb operations sdk v-3

Videotutoriales

Dynamodb examples

Dynamodb code

Herramientas

Librer铆as


About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published