Crea una función Lambda con Serverless Framework y Datadog
Tags: serverless, aws, javascript, datadog
Published: 2022-12-14 07:03:47

En este artículo les mostraré como ocupar las dos herramientas increíbles para crear y monitorear funciones lambda… Serverless Framework y Datadog 🙌


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qjbp3lh9wjqkav9d6don.png)

## ¿Qué es Serverless Framework?
Es una herramienta Open Source diseñada para construir funciones lambda de AWS. Además esta herramienta se puede ejecutar para otros proveedores cloud como Azure o Google Cloud.

Puedes crear tu cuenta gratuita acá 👉serverless.com

## ¿Qué es Datadog?
Si tienes una web tienes que ocupar Datadog. Es una herramienta increíblemente completa para el monitoreo de todo lo que se te ocurra dentro de una web. Controla el CI/CD, front, back, cloud y además puedes crear paneles personalizados con la información que necesites.

Puedes crear tu cuenta gratuita acá 👉 datadoghq.com

Ahora comencemos…

## Comenzamos con Serverles Framework
Primero debes ingresar en tu panel web de serverless y selecciona el menú org

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lb31kg85drok98r88sl0.png)


Ve a la pestaña provaiders y selecciona add. Te entregará 3 
formas de integrar tu cuenta de AWS. Yo prefiero la primera ya que es bastante simple y segura.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hrg9zoolj06pefu94op1.png)

Al hacer click en Connect AWS provider se abrirá tu cuenta de AWS con un template listo con los permisos para ejecutar serverless. Selecciona crear deberas esperar a que el estado cambie a UPDATE_COMPLETE.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ibb38xmf0z1acxzagzy5.png)

Vuelve a serverless y tu cuenta ya estará conectada.

Para instalar serverless en tu computador ejecuta el siguiente comando

`npm install -g serverless`

Ya instalado el primer comando que debes correr para crear un proyecto es serverless y te mostrará un listado de varios proyectos base que puedes ocupar. En este caso vamos a seleccionar AWS — Python — Starter


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhxlhwj9e7orfr6bjbx8.png)

Te solicitará el nombre del proyecto y luego te pedirá hacer login en la cuenta de Serverless Framework.

Se abrirá el navegador para confirmar que es tu cuenta 👍

Luego te preguntará si quieres hacer deploy… no lo hagas aún, primero vamos a instalar el plugin de datadog.

Ingresamos en la carpeta y ejecutamos el siguiente comando:

`serverless plugin install --name serverless-plugin-datadog`

Debería mostrarse el plugin instalado correctamente

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xg4c4hsy06a73ftfftdc.png)

Abre el proyecto creado con VSCode


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6g0h27d63an573fa3fzk.png)



Ingresamos al archivo serverless.yml y agregamos el siguiente código

```
custom:
  datadog:
    site: DATADOG_SITE
    apiKey: DATADOG_API_KEY
```

Completa los datos DATADOG_SITE y DATADOG_API_KEY, acá te doy una ayuda de donde puedes encontrar cada uno 👇

DATADOG_SITE : **datadoghq.com**

o puedes verificar en el siguiente enlace: [](https://docs.datadoghq.com/getting_started/site/#access-the-datadog-site)

Para generar una API Key debes ingresar en el panel de Datadog y selecciona la última opción del menú, luego ingresa en Organization Settings


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/junozmft9s7uagmfqh5t.png)

Luego ve a la opción API Keys

New Key, ponle el nombre, luego cópiala y pegala en DATADOG_API_KEY

Una vez configurado tu archivo serverless.yml solo debes ejecutar el siguiente comando (sls = serverless)

`sls deploy`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lr7gx2jldl4a7iieyh1j.png)

Así de fácil Serverless Framework se encargará de TODO!!! Permisos de aws, función, conectar datadog, etc…

No estás seguro de lo que pasó? Vamos a confirmar

**1- Revisamos si la función Lambda se creó correctamente ✅**
Ingresa en la consola de AWS y ve al servicio Lambda, la función ya está ahí!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9sjvh7nbtp8146h0q5u6.png)

Ingresamos y podemos ver todo el código de nuestro proyecto.

Al realizar un test deberíamos obtener el mensaje por defecto de la función hello dentro de handler.py, puedes cambiar el código en tu proyecto local y volver a ejecutar sls deploy para ver lo fácil que es subir el código.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2oov28286mlnxvivwj84.png)


**2- El deploy al panel de Serverless se realizó correctamente** ✅
Ingresamos a serverless.com y podemos ver que en el menú apps ya se encuentra la app HolaServerlessDatadog. Además nos entrega unas métricas de ejecución.


**3- Estamos recibiendo la información en Datadog correctamente ** ✅
Para esta confirmación primero debemos armar un Dashboard. Para eso solo debes hacer click en el siguiente enlace:

Lambda Dashboard Template

Selecciona Clone Dashboard y dale un nombre


Ya tienes un dashboard completo con todo lo que necesitas saber sobre la función lambda que acabas de implementar 😱


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i29i92g5kbaskmq77rta.png)


## Conclusión
**Serverless Framework** es una herramienta increíble para comenzar un proyecto con Lambda, tienes cientos de templates que puedes ocupar con tan agregar el comando template, por ejemplo con este comando ya tenemos lista una función que ejecuta un cron job en Nodejs.

`serverless --template-url=https://github.com/serverless/examples/tree/v3/aws-node-scheduled-cron`

**Datadog** es una herramienta increíble para monitoreo de absolutamente cualquier proyecto, la instalación es rápida y la creación de paneles es muy fácil. Puedes personalizarlos como quieras, de esta sabrás en todo momento lo que ocurre con tus funciones lambda.