App para la ejecución de operaciones y eventos programados sobre base de datos implementado con NodeJs, DynamoDB, Systems Manager Parameter Store, Api-Gateway, Serverless-Framework, Lambda, Scheduled events, entre otros.. El código del proyecto y la documentación de este (menos doc técnica), ha sido desarrollado/a en inglés.
Ver
- 1.0) Descripción del Proyecto.
- 1.1) Ejecución del Proyecto.
- 1.2) Configuración del proyecto desde cero
- 1.3) Tecnologías.
1.0) Descripción 🔝
Ver
1.1) Ejecución del Proyecto 🔝
Ver
- Una vez creado un entorno de trabajo a través de algún ide, clonamos el proyecto
git clone https://github.com/andresWeitzel/Microservice_Mercadolibre_Users_AWS
- Nos posicionamos sobre el proyecto
cd 'projectName'
- 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
- Instalamos dynamodb con la configuración de librerias que se encuentran dentro de .dynamodb. Procedemos a instalar dicho servicio
sls dynamodb install
- Creamos un archivo para almacenar las variables ssm utilizadas en el proyecto (Más allá que sea un proyecto con fines no comerciales es una buena práctica utilizar variables de entorno).
- Click der sobre la raíz del proyecto
- New file
- Creamos el archivo con el name
serverless_ssm.yml
. Este deberá estar a la misma altura que el serverless.yml - Añadimos las ssm necesarias dentro del archivo.
# Keys X_API_KEY : 'f98d8cd98h73s204e3456998ecl9427j' BEARER_TOKEN : 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
- Ejecutamos el proyecto
sls offline 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 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 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 serverless-dynamoDB-local (No dynamoDB)
npm install --save serverless-dynamodb-local
- Agregamos el plugin dentro del serverless.yml
plugins:
- serverless-dynamodb-local
- Reemplazamos la plantila serverless.yml inicial por la siguiente como modelo (cambiar nombre, etc)...
service: nombre
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs12.x
stage: dev
region : us-west-1
memorySize: 512
timeout : 10
plugins:
- serverless-dynamodb-local
- serverless-offline-ssm
- serverless-offline
functions:
hello:
handler: handler.hello
custom:
serverless-offline:
httpPort: 4000
lambdaPort: 4002
serverless-offline-ssm:
stages:
- dev
dynamodb:
stages:
- dev
- Descargamos la Java Runtime Engine (JRE) versión 6.x o posterior. Descargar desde aquí
- Descargamos el .jar que contendrá toda la configuración para la instalación . Descargar desde aquí
- Una vez descargado el .jar en formato .tar descomprimimos y copiamos todo su contenido dentro de la carpeta que se cread de dynamo en el proyecto (.dynamodb). Si esta carpeta no está, la creamos dentro de proyecto.
- Procedemos a instalar el servicio de dynamodb
sls dynamodb install
- Ejecutamos el proyecto
sls offline start
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 |
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 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 |
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 |
Extensión |
---|
Prettier - Code formatter |
YAML - Autoformatter .yml (alt+shift+f) |