Skip to content

Modelo CRUD para la comunicación entre lambdas a través de amazon simple notification service (SNS) implementado con Systems Manager Parameter Store, Api-Gateway, Amazon SNS, Serverless-Framework, Lambda, NodeJs, aws sdk-v3, entre otros.

License

Notifications You must be signed in to change notification settings

andresWeitzel/CRUD_SNS_NodeJS_AWS

Repository files navigation

Index app

CRUD_SNS_NodeJS_AWS

Modelo CRUD para la comunicación entre lambdas a través de amazon simple notification service (SNS) implementado con Systems Manager Parameter Store, Api-Gateway, Amazon SNS, Serverless-Framework, Lambda, NodeJs, aws sdk-v3, entre otros.


Índice 📜

Ver

Sección 1) Descripción, Tecnologías y Referencias

Sección 2) Endpoints y Ejemplos

Sección 3) Prueba de funcionalidad y Referencias



Sección 1) Descripción, Tecnologías y Dependencias

1.0) Descripción 🔝

Ver

1.0.0) Descripción General

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/SNS_NodeJS_AWS
  • Nos posicionamos sobre el proyecto
cd 'projectName'
  • 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
  • Las variables ssm utilizadas en el proyecto se mantienen para simplificar el proceso de configuración del mismo. Es recomendado agregar el archivo correspondiente (serverless_ssm.yml) al .gitignore.
  • 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
  • Si se presenta algún mensaje indicando qué el puerto 4567 ya está en uso, podemos terminar todos los procesos dependientes y volver a ejecutar la app
npx kill-port 4567
npm start

1.2) Configurar el proyecto serverless desde cero 🔝

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/SNS_NodeJS_AWS
  • Nos posicionamos sobre el proyecto
cd 'projectName'
  • 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
  • Inicializamos un template de serverles
serverless create --template aws-nodejs
  • Inicializamos un proyecto npm
npm init -y
  • Instalamos serverless offline
npm i serverless-offline --save-dev
  • Agregamos el plugin al .yml
plugins:
  - serverless-offline
  • Instalamos serverless ssm
npm i serverless-offline-ssm --save-dev
  • Agregamos el plugin al .yml
plugins:
  - serverless-offline-ssm
  - serverless-offline
  • Instalamos serverless sns
npm i serverless-offline-sns --save-dev
  • Agregamos el plugin al .yml
plugins:
  - serverless-offline-sns
  - serverless-offline-ssm
  - serverless-offline
  • Instalamos serverless, este deberá ser necesario para el uso de SNS
npm i serverless --save-dev
  • Instalamos el plugin para el uso de sns (aws-sdk-v3)
npm i @aws-sdk/client-sns --save-dev
  • Para la configuración de puertos, topics, etc, (de este plugin) dirigirse a la página de serverless, sección plugins y para los recursos SNS página de serverless, sección eventos sns
  • Las variables ssm utilizadas en el proyecto se mantienen para simplificar el proceso de configuración del mismo. Es recomendado agregar el archivo correspondiente (serverless_ssm.yml) al .gitignore.
  • Instalamos la dependencia para la ejecución de scripts en paralelo
npm i concurrently
  • 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
  • Si se presenta algún mensaje indicando qué el puerto 4567 ya está en uso, podemos terminar todos los procesos dependientes y volver a ejecutar la app
npx kill-port 4567
npm start

1.3) Tecnologías 🔝

Ver

Tecnologías Implementadas

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
Serverless Plugin 6.2.2 Librerías para la Definición Modular
Systems Manager Parameter Store (SSM) 3.0 Manejo de Variables de Entorno
Amazon Simple Queue Service (SQS) 7.0 Servicio de colas de mensajes distribuidos
Elastic MQ 1.3 Interfaz compatible con SQS (msg memory)
Amazon Api Gateway 2.0 Gestor, Autenticación, Control y Procesamiento de la Api
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

Plugins Implementados.

Plugin Descarga
serverless-offline https://www.serverless.com/plugins/serverless-offline
serverless-offline-ssm https://www.npmjs.com/package/serverless-offline-ssm
serverless-offline-sqs https://www.npmjs.com/package/serverless-offline-sqs

Extensiones VSC Implementados.

Extensión
Prettier - Code formatter
YAML - Autoformatter .yml (alt+shift+f)
DotENV


Sección 2) Endpoints y Ejemplos.

2.0) Endpoints y recursos 🔝

Ver

2.0.1) Variables en Postman

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


2.0.2) Listar todas las colas creadas (desde navegador)



2.0.3) Encolar un mensaje en la cola fifo (desde navegador)



2.0.4) Encolar un mensaje desde postman



Sección 3) Prueba de funcionalidad y Referencias.

3.0) Prueba de funcionalidad 🔝

Ver

3.1) Referencias 🔝

Ver

Conceptos SNS

Configuración SNS

Plugins SNS

SQS aws-sdk-v3

Ejemplos de código


About

Modelo CRUD para la comunicación entre lambdas a través de amazon simple notification service (SNS) implementado con Systems Manager Parameter Store, Api-Gateway, Amazon SNS, Serverless-Framework, Lambda, NodeJs, aws sdk-v3, entre otros.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published