New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

dynamodb_aws

Package Overview
Dependencies
Maintainers
0
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dynamodb_aws

conector dynamodb para node js para uso complementario de mvserver_express

latest
Source
npmnpm
Version
1.0.2
Version published
Maintainers
0
Created
Source

dynamodb_aws

Este módulo se destina al uso de nuestro handler de controladores y apis mvserver_express, este módulo se centra en conectar a DynamoDB y elaborar tablas. Este conector te facilita el uso de un CRUD en caso de usar esta base de datos no relacional de AWS.

Documentacion del uso e integracion con el modulo mvserver_express

A continuación te explicaré como podemos integrar este módulo y sus diferentes métodos para poder hacer CRUD. El modulo esta destinado para realizar lambda function en node js, simplifica la logica y disminuye el tiempo de desarrollo en las diferentes acciones, conexiones a base de datos y manejo de errores de tu funcion.

Pasos para la configuracion del MvServer

  • la esructura de tu lambda funcion debe ser la siguiente ve a su Documentación oficial
  • en la raiz de tu espacio de trabajo crear una carpeta con nombre source dentro de esta deberas crear una sub-carpetas con los siguientes nombres
    • source/collector
    • config/config.collector.js
    • config/config.lambda.js
    • config/config.dynamo.js

Los config deben estar estructurados de la siguiente manera

config.collector.js

Este archivo lleva las especificaciones de tu collect, como el modulo de base de datos que vas a usar, la ruta en donde definiras tus collectores,el tipo de base de datos, el nombre del modulo de base de datos y la funcion inicial de tu modulo.

 
const { dynamodb } = require("../../dynamodb_aws/index");
const { ErrorHandler } = require("../dictionary/errors/error-lambda");
const path = require('path');
module.exports = {
    dictionaryError: ErrorHandler,
    PATHCOLLECTOR: path.join(__dirname, '../source/collector'),
    type: "db",
    db: "dynamodb",
    module: function () {
        return dynamodb()
    }

}


config.lambda.js

Aqui colocaras tu cors en caso de llevar y los metodos que estaras manejando en tu lambda

 
module.exports = {
    cors_api: "localhost",
    methods: "OPTIONS,POST,GET,PUT"

}


config.dynamo.js

esta parte esta la parammetrizacion de tu base de datos, este ejemplo es con el modulo oficial de mongodb para mvserver

module.exports = {
    user: process.env.USER_DYN,
    password: process.env.PASSWORD_DYN,
    region: process.env.REGION
}


Se manjan las variables de entorno en este caso, tambien podrias manejar los kms en aws para guardar estos keys como gustes.

source/collector

Aqui tendras la lista de conectores y las acciones que quieres hacer en tu api

const config = require('../../config/config.dynamodb');

const serverdb = {
    user: config.user,
    password: config.password,
    region: config.region,
    table: "users"
};

const schemaUsers = {
    name: { type: String, require: true },
    id_user:{type: String, require: true},
    type: { type: String, require: true }
};



fastserver.collector("collector-add-users", {
    type: "db",
    action: "dynamodb",
    server: serverdb,
    queryType: "add",
    schema: {}
}); 

Parámetros de configuración

A continuación se describe el uso de cada uno de los parámetros en la configuración:

1. type: "db"

  • Descripción: Define el tipo de servicio con el que estamos trabajando. En este caso, "db" indica que se está trabajando con una base de datos.
  • Ejemplo: "db"

2. action: "dynamodb"

  • Descripción: Especifica la acción que se realizará con la base de datos. En este caso, "dynamodb" indica que se va a realizar una operación con DynamoDB, el servicio de base de datos no relacional de AWS.
  • Ejemplo: "dynamodb"

3. server: serverdb

  • Descripción: Contiene la configuración del servidor de la base de datos. Este objeto define las credenciales, la región y la tabla de DynamoDB a la que se realizará la conexión.
  • Ejemplo:
    serverdb = {
        user: "your-aws-access-key",
        password: "your-aws-secret-key",
        region: "us-east-1",  // Región de AWS
        table: "your-table-name"  // Nombre de la tabla en DynamoDB
    }
    

4. queryType: "add"

  • Descripción: Define el tipo de operación que se realizará en DynamoDB. En este caso, "add" indica que se está realizando una operación de inserción de datos en la base de datos.
  • Ejemplo: "add"

5. schema: {}

  • Descripción: Contiene la estructura o esquema de los datos que se van a insertar, actualizar o consultar en la base de datos. Este parámetro se utiliza para validar los datos antes de que sean procesados.
  • Ejemplo:
    schema = {
        name: { type: String, required: true },
        age: { type: Number, required: true }
    }
    
  • Nota: El esquema define los campos que deben estar presentes en los datos y sus tipos, si colocas el schema en blanco {} el mismo no validara los valores nio tipos de datos.

los diferentes comando para el QueryType son:

  • add: Agregar nuevo item
  • delete: borrar un item por si primary_key
  • get: obtine un valor en especifico por su primary
  • scan: Muestra todos los registros en la db
  • update: Actualiza campos de una tabla
  • query: se utiliza para realizar consultas específicas en una tabla o índice secundario, basándose en el valor de una clave primaria (Primary Key). Este método es ideal para recuperar elementos cuando tienes una Partition Key específica, y opcionalmente, puedes usar una Sort Key para filtrar aún más los resultados.

Observacion

El metodo update maneja una estrcutura para poder hacer el cambio de cualquier informacion

 ```javascript
            {
            "filter":{"bussinesid":"VK4bUns21XTC45raf4kDH4DlyRT2"},// id primary key definido en tu tabla de dynamodb
            "UpdateExpression":"set #name_bussines = :name_bussines", // Ejemplo: "set #status = :status"
            "ExpressionAttributeNames":{
                "#name_bussines": "name_bussines" // Ejemplo: { "#status": "status" }
            },
            "ExpressionAttributeValues":{
                ":name_bussines": "X-SMART-DEVELOP" // { ":status": "Active" }
            }
        }
   ```

Metodo query

El método Query en DynamoDB se utiliza para realizar consultas específicas en una tabla o índice secundario, basándose en el valor de una clave primaria (Primary Key). Este método es ideal para recuperar elementos cuando tienes una Partition Key específica, y opcionalmente, puedes usar una Sort Key para filtrar aún más los resultados.

Características principales de Query:

  • Búsqueda eficiente:

Query solo escanea los datos dentro de una partición específica, lo que lo hace mucho más eficiente que el método Scan, que recorre toda la tabla. Claves necesarias: 1. Requiere una Partition Key (obligatoria). 2. Puede incluir una condición adicional con la Sort Key (si la tabla tiene una Sort Key definida).

  • Filtros adicionales:

Puedes aplicar filtros (FilterExpression) para afinar los resultados que ya cumplieron con la consulta principal. Nota: Los filtros no afectan el rendimiento porque la base de datos primero evalúa la KeyConditionExpression y luego aplica los filtros. Índices secundarios:

Puedes usar el método Query no solo en la tabla principal, sino también en Índices Secundarios Locales (LSI) o Índices Secundarios Globales (GSI) para realizar consultas alternativas basadas en diferentes combinaciones de atributos.

El modelo que le pasarias seria algo como esto

 ```javascript
       {
            KeyConditionExpression: message.KeyConditionExpression, // Ejemplo: "bussinesid = :bussinesid"
            ExpressionAttributeValues: message.ExpressionAttributeValues, // Ejemplo: { ":bussinesid": "VK4bUns21XTC45raf4kDH4DlyRT2" },
            ExpressionAttributeNames: message.ExpressionAttributeNames || undefined, // Opcional, si se necesita mapear nombres de atributos
            FilterExpression: message.FilterExpression || undefined, // Opcional, para filtrar los resultados
            Limit: message.Limit || undefined, // Opcional, para limitar el número de resultados
            ScanIndexForward: message.ScanIndexForward !== undefined ? message.ScanIndexForward : true // Orden ascendente o descendente (true por defecto)
        }
        
   ```

Keywords

Dynamodb

FAQs

Package last updated on 14 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts