Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
NotificationsYou must be signed in to change notification settings

curso-serverless-lambda-APIGateway/crud-dynamo-express

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  1. Instalación de express y serverless-http
  2. Creación básica de una ruta
  3. Configuración para utilizar DynamoDB
  4. Instalación y configuración de dynamoDB y body-parser
  5. Añadir un registro a DynamoDb
  6. Recuperar todos los registros
  7. Recuperar un registro por userId
  8. Trabajar con DynamoDB en local

1. Instalación de express y serverless-http

Utilizaremos express y serverless-http para gestionar las llamadas http a nuestra lambda

npm install --save express serverless-http


2. Creación básica de una ruta

'use strict';constserverless=require('serverless-http');constexpress=require('express');constapp=express();app.get('/',(req,res)=>{res.send('Hola Mundo con ExpressJS');});module.exports.generic=serverless(app)

3. Configuración para utilizar DynamoDB

Para garantizar el acceso de la lambda a DynamoDB debemos configurar el archivoserverless.yml

  1. Definimos el nombre de la tabla que vamos a utilizar
custom:tableName:'users-table-${self:provider.stage}'
  1. Habilitamos permisos para que la lambda pueda interactuar con DynamoDB
provider:name:awsruntime:nodejs12.xstage:deviamRoleStatements:    -Effect:AllowAction:        -dynamodb:Query        -dynamodb:Scan        -dynamodb:GetItem        -dynamodb:PutItem        -dynamodb:UpdateItem        -dynamodb:DeleteItemResource:        -{ "Fn::GetAtt": ["UsersDynamoDBTable", "Arn"] }environment:USERS_TABLE:${self:custom.tableName}
  1. Definimos la tabla
resources:Resources:UsersDynamoDBTable:Type:'AWS::DynamoDB::Table'Properties:AttributeDefinitions:          -AttributeName:userIdAttributeType:SKeySchema:          -AttributeName:userIdKeyType:HASHProvisionedThroughput:ReadCapacityUnits:1WriteCapacityUnits:1TableName:${self:custom.tableName}

4. Instalación y configuración de dynamoDB y body-parser

Instalamos el sdk de AWS y body-parser mediante npm

npm install --save aws-sdk body-parser

En el archivohandler.js establecemos las constantes para poder utilizar estas librerías

constAWS=require('aws-sdk');constbodyParser=require('body-parser');constdynamoDB=newAWS.DynamoDB.DocumentClient()app.use(bodyParser.urlencoded({extended:true}));

5. Inserción de un nuevo registro

En el archivohandler.js obtenemos el nombre de la tabla de la variable de entorno:

constUSERS_TABLE=process.env.USERS_TABLE;

modificamos el post para insertar el nuevo registro en la tabla

app.post('/users',(req,res)=>{const{userId, name}=req.body;constparams={TableName:USERS_TABLE,Item:{      userId, name}};dynamoDB.put(params,(error)=>{if(error){console.log(error);res.status(400).json({error:'No se ha podido crear el usuario'});}else{res.json({ userId, name})}})});

6. Recuperar todos los registros

Para obtener todos los registros de dynamo, creamos una nueva ruta:

app.get('/users',(req,res)=>{constparams={TableName:USERS_TABLE,};dynamoDB.scan(params,(error,result)=>{if(error){console.log(error);req.status(400).json({error:'No se ha podido acceder a los usuarios'});}else{const{Items}=resultres.json({succes:true,message:'Usuarios cargados correctamente',users:Items});};});});

7. Recuperar un registro

Para obtener un registro en concreto, creamos la nueva ruta:

app.get('/users/:userId',(req,res)=>{constparams={TableName:USERS_TABLE,Key:{userId:req.params.userId}};dynamoDB.get(params,(error,result)=>{if(error){console.log(error);res.status(400).json({error:'No se ha podido acceder al usuario'});}if(result.Item){const{userId, name}=result.Item;res.json({userId, name});}else{res.status(404).json({error:'Usuario no encontrado'});};})});

8. Trabajar con DynamoDB en local

Para poder trabajar en local debemos instalar serverless-offline y serverles-dynamodb-local

npm install --save-dev serverless-offline serverless-dynamodb-local

Dentro del archivoserverless.yml debemos modificar la seccioncustom y añadir la secciónplugins:

plugins:  -serverless-offline  -serverless-dynamodb-localcustom:tableName:'users-table-${self:provider.stage}'dynamodb:start:migrate:truestages:      -${self:provider.stage}

También modificaremos el archivohandler.js para que en el caso en el que trabajemos en modo local la relación a la base de datos sea correcta.

constUSERS_TABLE=process.env.USERS_TABLE;constIS_OFFLINE=process.env.IS_OFFLINE;if(IS_OFFLINE==='true'){dynamoDB=newAWS.DynamoDB.DocumentClient({region:'localhost',endpoint:'http://localhost:8000'});}else{dynamoDB=newAWS.DynamoDB.DocumentClient();}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp