Muchas veces trabajamos en proyectos en los que necesitamos saber si ciertas web estan funcionando de forma correcta, pero no queremos montar un sistema de monitorización, ya sea por falta de recursos, tiempo o de conocimiento. Esta semana, me he encontrado en esta situación, necesitaba comprobar el estado de varias webs pero no merecía la pena montar un sistema de monitorización, por lo que he decidido chequear las webs a través de una Lambda en AWS.
Teniendo en cuenta los diferentes recursos que nos ofrece AWS, he decidido crear una Lambda la cual chequea las cabeceras HTTP de varias webs y me envia un e-mail a través de SNS si alguna de ella está fallando, con esto me ahorro de montar, en una instancia EC2, un sistema de monitorización, ya que a veces queremos matar moscas a cañonazos. En el repositorio de GitHub de DBigCloud podéis encontrar el código.
OJO: Debemos de tener en cuenta que las Lambdas son facturadas por tiempo de ejecucción, así que tened cuidado si chequeáis muchas webs a la vez o bien si algún cheque tarda más de lo normal.
Los requisitos poder comprender está entrada es tener los siguientes conocimientos sobre AWS.
- Cómo crear una IAM Policy
- Cómo crear un Rol usando una IAM Policy
- Subir a S3 un fichero.
- Cómo crear una Lambda.
- Programar tareas a través de CloudWatch
La lambda esta compuesta por los siguientes ficheros:
- Código en index.js y sus dependencias que tendréis que instalar.
- Policy.json que es un ejemplo de policy para el Rol de la Lambda, la cual tiene permisos sobre el bucket S3 y sobre Topic SNS para envias los email.
- List.json en este fichero hay una serie de webs, el método que uso para llamaras y los parámetros (opcionales) que le envio.
Cómo configurar la Lambda Check_HTTP_Lambda en AWS
- Lo primero de todo que hay que hacer es crear un topic en SNS y validar una suscripción para que nos pueda llegar los correos, es necesario anotar dicho ARN:
- Crear un Bucket S3 y subir el fichero list.json.
- Crear la policy que vamos a añadir al ROL IAM, dicha policy nos va a permitir acceder al fichero S3 y poder publicar mensajes con el topic creado anteriormente, en dicha policy debéis añadir el ARN del topic y el nombre del bucket en el que se encuentra el fichero list.json.
- Cuando nos descarguemos el fichero index.js, en la misma ruta debemos de instalar las dependencias de Node.JS que necesitamos, en el propio repositorio se explica cómo realizarlo, posteriormente comprimimos toda la carpeta y creamos una nueva Lambda.
- Es necesario configurar la Lambda, eligiendo el Rol al cual le añadimos la policy anterior y muy importante establecer el Timeout de ejecución de la Lambda.
- Por último tenéis que crear una tarea programada en CloudWatch para que se ejecute cuando lo necesitéis.
Con esto ya tenemos creado nuestro mini sistema de alertas que nos avisará si alguna de nuestras webs han dejado de funcionar. Otra utilidad que le podéis dar a esta Lambda, por ejemplo sería chequear el precio de algún producto que estéis esperando a que baje de precio, o vuestras notas o alguna publicación, usad la imaginación y adaptarla a vuestras necesidades. Espero que os sea de utilidad.
Compártelo: