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
Bienvenida
Desarrollo y Despliegue con Serverless Framework en AWS
Implementación de Serverless en AWS: API Gateway, Lambda y DynamoDB
Conceptos Claves
Ecosistema Serverless y Serverless Framework en AWS
Ventajas y desventajas de servicios y framework serverless
Explicación de Serverless Framework
Integración de Serverless Framework en AWS
Configuración de Entorno de Desarrollo Serverless en Windows
Preparación de entorno local con Serverless Framework en macOS
Serverless YAML: Estructura y Uso en Frameworks Cloud
Ecosistema Serverless en AWS
Creación y despliegue de una aplicación serverless básica
Creación y Gestión de Aplicaciones con Serverless Framework
Pruebas de Funciones Lambda en Local con Serverless Framework
Desarrollando con Serverless Framework
Creación y Configuración de CRUD Serverless con DynamoDB
Configuración y uso de DynamoDB Local con Serverless
Despliegue de Aplicaciones Serverless con DynamoDB en AWS
Inserción de Usuarios en DynamoDB con Funciones Lambda
Actualización de Usuarios en DynamoDB con Serverless Framework
Función Lambda Delete en Python para DynamoDB Serverless
Integración de AWS Free Tier con Serverless Framework
Bonus
Configuración de AWS Budgets para Control de Costos
Integración de GitHub Actions con AWS para CI/CD Serverless
Despliegue Automático con GitHub Actions y Serverless Framework
Optimización de Despliegue y Tamaño en AWS Lambda
Cierre del curso
Eliminación de Recursos y Claves en AWS con Serverless Framework
Proyecto Serverless Avanzado en AWS
Crea tus API’s con Serverless Framework y ChatGPT
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
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.
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:
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
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
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
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:
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.
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
Por último, corrige la configuración del cliente de DynamoDB para que no busque la base de datos en la nube, sino en local:
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",
});
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
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
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?