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

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

9/25
Recursos

¿Cómo crear tu primera aplicación serverless?

Crear una aplicación serverless puede parecer un desafío, especialmente si te enfrentas por primera vez al Serverless Framework. Pero no te preocupes, en esta guía te llevaremos paso a paso en el proceso. ¡Prepárate para iniciar esta emocionante travesía tecnológica!

¿Qué es el Serverless Framework?

El Serverless Framework es una herramienta invaluable que permite a los desarrolladores crear y desplegar funciones serverless con facilidad. A pesar de su nombre, aún necesitas un proveedor de nube para alojar tus funciones, como Amazon Web Services (AWS). Sin embargo, gracias a su naturaleza modular, es agnóstico en cuanto al proveedor y el lenguaje de programación, ofreciéndote versatilidad.

¿Cómo iniciamos el proceso?

Primero, necesitas sentirte cómodo con el Serverless Framework. Para ello, familiarízate con los comandos esenciales que te ayudarán durante el desarrollo. Puedes invocar el framework simplemente escribiendo serverless o, si prefieres, SLS. Ambas invocaciones ofrecen accesos a las plantillas y comandos disponibles.

Uso de comandos para crear un servicio

Para crear tu primera aplicación, utilizaremos la plantilla HolaMundo, que puedes obtener desde un repositorio en GitHub. Aquí tienes un comando que te será útil:

serverless create --path hola-mundo --template-url [ruta-del-repositorio]

Donde --path define el directorio de almacenamiento de tu proyecto y --template-url define la plantilla base, que en este caso proviene de un repositorio público de GitHub.

¿Qué archivos conforman nuestra aplicación serverless?

Al crear tu aplicación, notarás varios archivos esenciales y, para que todo funcione correctamente, es clave entender el propósito de cada uno:

  1. package.json: Definiciones de dependencias de tu proyecto. Aquí se destaca la dependencia a Serverless versión 3.21.0.
  2. handler.js: Contiene la lógica de tu función Lambda. Utiliza una función flecha que recibe objetos event y context y devuelve una respuesta HTTP simple.
  3. serverless.yaml: Tal vez el archivo más crítico, ya que define la configuración del servicio. Incluye secciones para el service, provider y functions.

¿Cómo configuramos nuestro archivo serverless.yaml?

Aquí es donde tu aplicación serverless toma forma. A continuación, las secciones clave:

  • service: Nombre de la aplicación, por ejemplo, "HolaMundo".
  • provider: Configura el proveedor de nube, AWS en este ejemplo, y define el runtime (e.g. Node.js 14).
  • functions: Aquí definimos las funciones a ser ejecutadas, como helloWorld. Incluirás especificaciones para handlers y triggers de eventos HTTP.

Ejemplo básico de un archivo serverless.yaml

service: hola-mundo
provider:
  name: aws
  runtime: nodejs14.x
functions:
  helloWorld:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get

¿Cómo desplegar nuestra aplicación?

El despliegue es la etapa culminante. Para hacerlo, asegúrate de estar en el directorio correcto donde está el serverless.yaml. Luego, simplemente usa:

sls deploy

El comando deploy ejecuta una serie de procesos que involucran AWS CloudFormation, un servicio que simplifica la infraestructura como código, creando automáticamente los recursos necesarios en AWS.

¿Qué sucede tras el despliegue?

Al finalizar, recibirás una URL abierta al público a través de la cual puedes acceder a la función desplegada. Esta aplicación ya es escalable, manejando eficientemente picos de tráfico, y aprovechando las mejores prácticas del Well-Architected Framework de AWS.

Esperamos que esta experiencia te motive a continuar explorando el mundo serverless. Con cada clase, dominarás nuevas técnicas y buenas prácticas. ¡Sigue adelante, las posibilidades son infinitas!

Aportes 21

Preguntas 9

Ordenar por:

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

Si tienes errores al momento de hacer el deployment, necesitas que tu usuario de AWS tenga los siguientes permisos, los puedes configurar wn AWS console dentro del servicio IAM.

AmazonAPIGatewayAdministrator
AmazonS3FullAccess
AWSCloudFormationFullAccess
AWSLambda_FullAccess
CloudWatchLogsFullAccess
IAMFullAccess

Siempre cambio los nombres para saber si estoy entendiendo como se conecta cada archivo, así quedó mi handles.js

const hello = async (event, context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({ message: "Hello World - Serverless Framework AWS" }),
  };
};

module.exports = {
  hello,
};

Y así quedo mi serverless.yml :

service: hello-world

provider:
  name: aws
  runtime: nodejs18.x

functions:
  hello-world:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: GET

Deberían de eliminar este curso o actualizarlo, ya no es compatible con la version 4 de Serverless Framework ![](https://static.platzi.com/media/user_upload/image-ea29e0ef-bb16-42bf-883f-12892442873a.jpg)

Iniciar proyecto con Serverless Framework

El objetivo es crear la primera aplicación serverless(hola mundo) se siguen los siguientes pasos:

  1. Se crea una carpeta en donde se almacenaran los archivos del proyecto

  2. Crear el proyecto desde consola invocando el comando de serverless framework (serverless o sls abreviado) si se seleciona una plantilla de la lista se crea un nuevo proyecto desde esa plantilla, para ver la ayuda ssl help. Con el siguiente comando se crea un proyecto basado en una plantilla en github, tambien se indica su path.

    serverless create --path hola-mundo --template-url https://github.com/platzi/serverless-framework/tree/main/hola-mundo
    
  3. Se crea la estructura de archivos y cada uno tiene su sentido:

    1. package.json: son las dependencias que se usan en el proyecto, y las descripciones generales. Similar a un proyecto estándar de node.js. Tiene la dependencia del paquete serverless en la versión 3.21.0.
    2. handler.js: desarrollado para este ejemplo en javascript es la función lambda principal. Es una arrow function asincrona que recibe un evento y un contexto. Esta función retorna un objeto json con código de estado 200 en el body.
    3. serverless.yaml: Tiene las secciones de servicio con el nombre del proyecto, el provider en donde se indica el nombre aws en este caso y el runtime que es node.js en la versión 14 y en la seccion de functions se hace referencia a la funcion definida en el handler.js indicando como evento que va a tener un http de tipo get y que apunta a hello, el evento indica cuando se va invocar la función lambda.

Desplegar la Aplicación

En la carpeta donde se encuentra el archivo serverless.yaml ejecutar el comando de despliegue

cd hola_mundo
sls deploy

Es importante mencionar que el cliente de AWS debe estar configurado a nivel global para poder hacer el despliegue

al finalizar se muestra la ruta que se definió en los recursos del archivo serverless.yaml

Hola. También funciona actualmente el siguiente comando:

npx serverless

Si a la hora de hacer el deploy les tira error, deben de configurar su cuenta aws con el comando:

aws confgure

Deben de proporcionar su AWS Access key ID y AWS Secret Access Key.
Esas claves las pueden generar luego de crear un usuario en IAM

A dia de hoy, no se soporta el runtime nodejs nodejs14.x, habria que actualizarlo en el archivo serverless.yml para usar una version nueva de node (nodejs20.x por ejemplo)
Para solucionar el error ```js ✖ Configuration file not found in directory ```Instale: ```js npm i [email protected] -g ```Y me funciono.
La instrucción: `serverless create --path hola-mundo --template-url `[`https://github.com/platzi/serverless-framework/tree/main/hola-mundo`](https://github.com/platzi/serverless-framework/tree/main/hola-mundo) Me genera este error: ![](https://static.platzi.com/media/user_upload/image-a5379fa9-2186-4982-a65f-4cffd443324c.jpg)
Hola con todos, me quedo en la ejecución de este comando, y me muestra el siguiente mensaje: ![](https://static.platzi.com/media/user_upload/image-3e61e7ae-8fcf-44fd-9b04-f90d18f9c41e.jpg) Llevo varios días trabado aquí, si alguien me puede ayudar por favor
a los que le sale el error Error: The security token included in the request is invalid. ya que no se definen credenciales en el proyecto, aws estara tomando las credenciales que definiste en aws configure, sino lo haz hecho ejecuta el comando e ingresar tu access key y secret access key y luego intenta nuevamente el sls deploy
Lo que yo realicé para que me funcionara, fue copiar los archivos de la carpeta: "hola-mundo", luego ejecuté npm install, para descargar las dependencias y finalmente ejecuté serverless deploy.
La instrucción: serverless create --path hola-mundo --template-url <https://github.com/platzi/serverless-framework/tree/main/hola-mundo> Me genera este error: ![](https://static.platzi.com/media/user_upload/image-a5379fa9-2186-4982-a65f-4cffd443324c.jpg)
El comando ```js serverless create --path hola-mundo --template-url https://github.com/platzi/serverless-framework/tree/main/hola-mundo ```Me genera este error: ![](https://static.platzi.com/media/user_upload/image-a5379fa9-2186-4982-a65f-4cffd443324c.jpg)
Está Vivo! ![](https://static.platzi.com/media/user_upload/Screen%20Shot%202024-05-14%20at%2022.06.52-e1fc16ee-1d72-4552-b051-55a1684e05eb.jpg)
![](https://static.platzi.com/media/user_upload/Screen%20Shot%202024-05-14%20at%2022.06.52-f91fb879-366e-4aae-89c5-3e6d38a9a03f.jpg)Está vivo! ![](https://static.platzi.com/media/user_upload/Screen%20Shot%202024-05-14%20at%2022.06.33-06717c7f-5ca9-43a9-813e-43253403add5.jpg)
Me arroja un error 403 al momento que trato de utilizar el endpoint generado. En postman la respuesta muestra el mensaje "Forbidden". ¿Alguien podría ayudarme qué puede estar pasando? He tratado de seguir todos los pasos y ya he desplegado el proyecto 2 veces.

En mi caso ya tenia un archivo con una configuración por defecto para el aws cli. El cual uso para mi trabajo.
Para dejar ese archivo sin modificar y seguir con el curso con mis credenciales de mi cuenta personal, utilice el siguiente comando:

sls config credentials --overwrite --provider aws --key [IAM key] --secret [IAM secret]
Eureka!!! Funciona!!!

Comando para clonar el proyecto “hola-mundo”

sls create --path hola-mundo --template-url https://github.com/platzi/serverl
ess-framework/tree/main/hola-mundo