Bienvenida

1

Desarrollo y Despliegue con Serverless Framework en AWS

2

Implementación de Serverless en AWS: API Gateway, Lambda y DynamoDB

Conceptos Claves

3

Ecosistema Serverless y Serverless Framework en AWS

4

Ventajas y desventajas de servicios y framework serverless

Explicación de Serverless Framework

5

Integración de Serverless Framework en AWS

6

Configuración de Entorno de Desarrollo Serverless en Windows

7

Preparación de entorno local con Serverless Framework en macOS

8

Serverless YAML: Estructura y Uso en Frameworks Cloud

Ecosistema Serverless en AWS

9

Creación y despliegue de una aplicación serverless básica

10

Creación y Gestión de Aplicaciones con Serverless Framework

11

Pruebas de Funciones Lambda en Local con Serverless Framework

Desarrollando con Serverless Framework

12

Creación y Configuración de CRUD Serverless con DynamoDB

13

Configuración y uso de DynamoDB Local con Serverless

14

Despliegue de Aplicaciones Serverless con DynamoDB en AWS

15

Inserción de Usuarios en DynamoDB con Funciones Lambda

16

Actualización de Usuarios en DynamoDB con Serverless Framework

17

Función Lambda Delete en Python para DynamoDB Serverless

18

Integración de AWS Free Tier con Serverless Framework

Bonus

19

Configuración de AWS Budgets para Control de Costos

20

Integración de GitHub Actions con AWS para CI/CD Serverless

21

Despliegue Automático con GitHub Actions y Serverless Framework

22

Optimización de Despliegue y Tamaño en AWS Lambda

Cierre del curso

23

Eliminación de Recursos y Claves en AWS con Serverless Framework

24

Proyecto Serverless Avanzado en AWS

Crea tus API’s con Serverless Framework y ChatGPT

25

Creación de APIs con Serverless Framework y ChatGPT

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Configuración y uso de DynamoDB Local con Serverless

13/25
Recursos

¿Cómo corregir errores al trabajar con DynamoDB local?

Cometer errores es parte del proceso de aprendizaje. Entender por qué ocurren y cómo solucionarlos fortalece nuestras habilidades. Al intentar ejecutar un cliente de DynamoDB en local, uno puede encontrar errores si el recurso buscado no está disponible. En este caso, el error surgía porque el cliente intentaba conectarse a una base de datos en la nube de Amazon, mientras que la prueba se realizaba localmente. Afortunadamente, existe una solución: usar DynamoDB local.

¿Cómo trabajar con DynamoDB local?

DynamoDB local es un plugin que permite ejecutar las bases de datos en local. Esto es especialmente útil cuando deseas evitar conectarte a la nube mientras desarrollas y pruebas en tu propia máquina. Para trabajar con DynamoDB local, primero necesitas asegurarte de contar con Java Runtime Environment (JRE) instalado, ya que simula la base de datos usando Java. A continuación, sigue estos pasos:

  1. Instalación del plugin: Utiliza npm para instalar DynamoDB local. Este paso es esencial para integrar el plugin a la configuración de serverless.

    npm install serverless-dynamodb-local --save
    
  2. Agregar el plugin a serverless: Edita tu archivo serverless.yaml para incluir el nuevo plugin. Aquí es donde puedes tener múltiples plugins si lo deseas.

    plugins:
      - serverless-dynamodb-local
    
  3. Instalación de la base de datos: Una vez agregado el plugin, debes instalar la base de datos usando un comando específico proporcionado por el plugin.

    serverless dynamodb install
    

¿Cómo configurar el plugin?

Configurar adecuadamente DynamoDB local es clave para que funcione correctamente. La configuración del plugin se realiza en la sección personalizada de serverless.yaml. Aquí defines cómo interactuará el plugin con tu aplicación:

  1. Añadir configuración custom: Copia y pega el siguiente fragmento en tu serverless.yaml:

    custom:
      dynamodb:
        stages: [local]
        start:
          port: 8000
          inMemory: true
          heapInitial: 200m
          heapMax: 1g
          migrate: true
    

Este setup asegura que la base de datos local esté en memoria, prevaleciendo la eficiencia al realizar pruebas.

¿Cómo definir recursos con CloudFormation?

El plugin no actúa como la base de datos en sí, por lo que debes definirla en la sección de recursos del archivo serverless.yaml usando syntaxis de CloudFormation. Este proceso será explorado en cursos avanzados, pero para los propósitos actuales, puedes simplemente copiar el fragmento proporcionado en la documentación:

resources:
  Resources:
    UserStable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: UserStable
        AttributeDefinitions:
          - AttributeName: PK
            AttributeType: S
        KeySchema:
          - AttributeName: PK
            KeyType: HASH
        BillingMode: PAY_PER_REQUEST

¿Cómo corregir el error de conexión?

Por último, corrige la configuración del cliente de DynamoDB para que no busque la base de datos en la nube, sino en local:

  1. Configura el cliente: Modifica el cliente de DynamoDB para que apunte a tu propia máquina. Asegúrate de revisar la documentación para obtener el código correcto.

    const client = new AWS.DynamoDB.DocumentClient({
      region: "localhost",
      endpoint: "http://localhost:8000",
      accessKeyId: "fakeMyKeyId",
      secretAccessKey: "fakeSecretAccessKey",
    });
    
  2. Reinicia serverless offline: Vuelve a iniciar serverless offline para probar la aplicación y verifica que el error desapareció.

    serverless offline start
    

Con estos pasos, tu aplicación debería funcionar correctamente en local, interactuando efectivamente con DynamoDB local. ¡Continúa explorando y afianzando tu conocimiento para desplegar tu aplicación en la nube!

Aportes 15

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

He ido configurando lo aprendido con Typescript, aquí dejo el link del repo espero que les sirva https://github.com/carlosdizx/crud-users-with-serverless

En mi caso no me funciono la propuesta de Alejandro Chavez sobre modificar el siguiente archivo:

download_url en node_modules/dynamodb-localhost/dynamodb/config.json

En mi caso tuve que ejecutar las siguientes lineas dentro de la carpeta del proyecto:

wget http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz
mkdir .dynamodb
tar zxvf dynamodb_local_latest.tar.gz -C .dynamodb

Nota: Debes tener instalado wget

Acá les dejo el código en Python ![](https://static.platzi.com/media/user_upload/image-9abfc0ed-0d89-40dc-8f5a-152f623812b1.jpg) Asi quedaria el serverless.yml ![](https://static.platzi.com/media/user_upload/image-575b0a00-9e03-4391-9606-f620b2520fa5.jpg)![]()
Luego de instalar serverless dynamo ya no me vuelve a funciona serverless framework TypeError: Class extends value undefined is not a constructor or null
Hola, me sale este error: `UnrecognizedClientException: The Access Key ID or security token is invalid.: DynamoDB - Error - ` Alguna idea? Gracias!
```bashnpx serverless offline start```
Para quienes tengan el error TypeError: Class extends value undefined is not a constructor or null al momento de insltar dynamodb local deben bajar su version de serverless de las 4.x a la 3.x
dynamodb local es casi que imposible instalar y ejecutar llevo 2. fias tratando haciendo todos los aportes y termina con un error que el porte 8000 está siendo utilizado la verdad. el curso creo q falta actualizar. si es que ya hacy cosas nuevas
Les comparto el código para los que usan el `"type": "module" `, en el package.json. documentación: DynamoDB Document Client <https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/dynamodb-example-dynamodb-utilities.html> ![](https://static.platzi.com/media/user_upload/image-8290d519-0149-4fc9-a448-9ec9d1f2d059.jpg)
En mi caso, que ya tenia iniciada mi sesion en aws, la consola me lanzaba el error de credenciales invalidas. Al eliminar accessKeyId y secretAccessKey de la constante dynamodb ya se logro solucionar
A mi me sale el siguiente error al consumir el endpoint. Que se hace en ese caso? ![](https://static.platzi.com/media/user_upload/image-85f46de8-4b85-4dba-b8e2-c8cc95f47e2e.jpg)

A alguien más le aparece algo así? 😦

Error:
TypeError: Cannot read properties of undefined (reading 'dynamodb')
    at new ServerlessDynamodbLocal (/Users/selenebautista/Generator/getusers/node_modules/serverless-dynamodb/index.js:13:112)
    at PluginManager.addPlugin (/Users/selenebautista/Generator/getusers/node_modules/serverless/lib/classes/plugin-manager.js:91:28)
    at /Users/selenebautista/Generator/getusers/node_modules/serverless/lib/classes/plugin-manager.js:137:69
    at Array.forEach (<anonymous>)
    at PluginManager.loadAllPlugins (/Users/selenebautista/Generator/getusers/node_modules/serverless/lib/classes/plugin-manager.js:137:44)
    at async Serverless.init (/Users/selenebautista/Generator/getusers/node_modules/serverless/lib/serverless.js:146:5)
    at async /Users/selenebautista/Generator/getusers/node_modules/serverless/scripts/serverless.js:601:7```

Les dejo otra documentacion en medium sobre instalar dymanodb en local

Editar download_url en
node_modules/dynamodb-localhost/dynamodb/config.json por
https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz
e importar https en lugar de http en node_modules/dynamodb-localhost/dynamodb/installer.js

En el proyecto de servidor sin servidor (Serverless), experimento un problema donde la función Lambda no devuelve ningún resultado al consultar DynamoDB Local. Esto podría deberse a la falta de datos en la tabla 'usersTable' o a una configuración incorrecta de DynamoDB Local en el archivo 'serverless.yml'.?