Publiqué una plantilla para la API. Pueden usarla para crear un nuevo proyecto.
serverless create --path api-crud --template-url https://github.com/juliosarango/serverless-api-template
Bienvenida
Bienvenida al curso de Serverless Framework
Presentación de proyecto
Conceptos Claves
Definiciones claves del ecosistema Serverless
Ventajas y desventajas de Serverless framework
Explicación de Serverless Framework
Serverless en local
Herramientas necesarias para un ambiente de trabajo con serverless framework
Instalación en macOS
Conociendo el serverless.yml: provider, functions, custom, plugins, etc
Ecosistema Serverless en AWS
Iniciar proyecto con Serverless Framework
Revisión de los recursos creados
Probar y debuggear en local y en la nube
Desarrollando con Serverless Framework
Recapitulación de la aplicación y método GET
DynamoDB en local
Despliegue y Testing de nuestro GET
Creación y despliegue de POST
UPDATE para actualizar datos
Hacemos un DELETE con python
Otros servicios AWS y presentación de casos de uso del segundo curso
Bonus
Creación de Budget en AWS
Indicaciones de GitHub Actions
CI/CD para nuestro proyecto
Refactor y alistamiento para Prod
Cierre del curso
Limpiemos nuestro workspace en AWS
Recapitulación y cierre de curso
Crea tus API’s con Serverless Framework y ChatGPT
Crea tus API’s con Serverless Framework y ChatGPT
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Adentrarse en el mundo del desarrollo serverless puede parecer un reto, pero con las herramientas adecuadas, es un camino más accesible del que muchos piensan. Este artículo te guía a través de la implementación inicial de un proyecto serverless utilizando AWS API Gateway, Lambda y DynamoDB en un entorno simulado localmente.
El ecosistema que estamos construyendo tiene varios componentes esenciales:
La administración de estos elementos se realiza a través de Serverless Framework, garantizando que todo nuestro despliegue sea coherente y eficiente.
Para comenzar, consideramos una refactorización del proyecto existente:
GetUsers
.serverless.yaml
: Adaptarlo a los nuevos nombres y funcionalidades, asegurando una estructura clara y consistente.Para interactuar con DynamoDB, es necesario instalar el “AWS-SDK”:
npm install aws-sdk --save-dev
Posteriormente, configurar un cliente de DynamoDB para manejar las consultas:
const AWS = require('aws-sdk');
const DynamoDB = new AWS.DynamoDB.DocumentClient();
Esta integración facilita la creación de queries y garantiza una comunicación efectiva con la base de datos.
Definimos el handler getUsers
para gestionar las peticiones HTTP:
module.exports.getUsers = async (event) => {
const params = {
TableName: 'CRUDServerlessUsers',
KeyConditionExpression: 'pk = :pk',
ExpressionAttributeValues: {
':pk': 1,
},
};
try {
const res = await DynamoDB.query(params).promise();
return {
statusCode: 200,
body: JSON.stringify({ user: res.Items }),
};
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify({ error: error.message }),
};
}
};
Probar localmente tu aplicación es crucial para asegurar un correcto funcionamiento antes de migrar a producción. Siguientes pasos:
serverless-offline
.serverless offline start
Este comando simula el comportamiento de API Gateway y Lambda en tu entorno local.
El manejo de errores es parte del proceso de aprendizaje. Algunos errores típicos incluyen:
Después de establecer la lógica básica, el siguiente paso es crear la base de datos en DynamoDB y optimizar el rendimiento de las queries. Es importante seguir investigando y formándote en esta área para perfeccionar tus habilidades en el desarrollo serverless.
El mundo serverless es vasto y ofrece infinitas oportunidades para desarrolladores que buscan eficiencia y escalabilidad. No dudes en continuar explorando y experimentando con nuevas tecnologías y estrategias dentro de este emocionante ecosistema.
Aportes 7
Preguntas 2
Publiqué una plantilla para la API. Pueden usarla para crear un nuevo proyecto.
serverless create --path api-crud --template-url https://github.com/juliosarango/serverless-api-template
var params = {
ExpressionAttributeValues: { ':pk': '1' },
KeyConditionExpression: 'pk = :pk',
TableName: 'crud-serverless-users-table'
};
Yo ajuste un poco el codigo para poder tener un response y poderlo editar en cualquier parte del codigo
const aws = require('aws-sdk');
const dynamonDB = new aws.DynamoDB.DocumentClient();
const getUsers = async (event, context) => {
const response = {
"statusCode": 200,
"body": ''
}
let params = {
ExpressionAttributeValues: { ':pk': '1' },
KeyConditionExpression: 'pk = :pk',
TableName: 'crud-serverless-users-table'
};
dynamonDB.query(params).promise().then(res =>{
console.log(res);
response.statusCode = 201;
response.body = {'user': res};
})
response.body = JSON.stringify(response.body);
return response
}
module.exports = {
getUsers
}
Error:
NOTE: The AWS SDK for JavaScript (v2) will be put into maintenance mode in 2023
Solución:
npm uninstall aws-sdk
npm install aws-sdk@2.729.0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?