Cómo crear un evento en AWS Cloudwatch para activar una función Lambda

Los Eventos de Amazon CloudWatch describen cambios en los recursos de AWS. Podemos emparejar eventos y dirigirlos a una o varias funciones de destino. Los Eventos CloudWatch se enteran de los cambios operativos a medida que se producen, por ejemplo, si se ha creado un recurso definido en la Regla Cloudwatch, la regla se enterará de ello y, a cambio, activará una función de destino.

Antes de seguir adelante y crear una regla de eventos, vamos a entender sus fundamentos.

  1. Eventos:
    Un evento significa que hay un cambio en el entorno de AWS.
  2. Reglas:
    Las reglas se utilizan para hacer coincidir el evento. Aquí se comparan y comprueban los eventos.
  3. Objetivos:
    Aquí se procesan los eventos. Los objetivos pueden incluir instancias de Amazon EC2, funciones de AWS Lambda, flujos de Kinesis, tareas de Amazon ECS, máquinas de estado de Step Functions, temas de Amazon SNS, colas de Amazon SQS y objetivos integrados.

En este artículo, crearemos una regla de evento que comprobará si se produce un cambio de estado en EC2 y activará una función Lambda. Si no conoces la Función Lambda, haz clic aquí para crear una para ti. Lo que hace Lambda puede ser tu elección, pero en este documento tengo una Lambda que elimina los Volúmenes EBS no utilizados. He mencionado el código Lambda en este artículo. También puedes utilizar tu propia función Lambda.

Requisitos previos

  1. Cuenta AWS(Créala si no tienes una).
  2. Función Lambda.

¿Qué vamos a hacer?

  1. Iniciar sesión en AWS.
  2. Crea una Regla de Evento Cloudwatch para activar una Función Lambda.

Iniciar sesión en AWS

Pulsa aquí para ir a la página de inicio de sesión en AWS.

Cuando pulsemos el enlace anterior, veremos una página web como la siguiente en la que se nos pide que iniciemos sesión utilizando nuestros datos de acceso.

Una vez que hayas iniciado sesión con éxito en tu cuenta, verás la siguiente pantalla.

Crear un Evento Cloudwatch para activar una Función Lambda

Para crear una regla de evento de Cloudwatch, busca cloudwatch y haz clic en el resultado para ir al panel de Cloudwatch.

En el panel de control de Cloudwatch, haz clic en Reglas dentro de Eventos en el panel izquierdo.

Aquí, haz clic en «Crear regla» para crear tu primera regla para activar una Función Lambda en tu región.

Selecciona el botón de opción «Patrón de Eventos», en Nombre de Servicio selecciona «EC2», selecciona «Notificación de cambio de estado de instancia EC2» para Tipo de Evento.

Haz clic en Añadir Objetivos para añadir una Función Lambda existente como objetivo y haz clic en «Configurar detalles».

Haz clic aquí para aprender a crear una Función Lambda para ti. Encuentra el siguiente Código Lambda de referencia para ti.

Código Lambda: Utiliza este código para crear una Función Lambda si no tienes ninguna en tu cuenta.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
 
def lambda_handler(event, context):
    for vol in ec2.volumes.all():
        if  vol.state=='available':
            if vol.tags is None:
                vid=vol.id
                v=ec2.Volume(vol.id)
                v.delete()
                print ('EBS Volume Deleted ' +vid)
                continue
            for tag in vol.tags:
                if tag['Key'] == 'Name':
                    value=tag['Value']
                    if value != 'DoNNotDel' and vol.state=='available':
                        vid=vol.id
                        v=ec2.Volume(vol.id)
                        v.delete()
                        print ('EBS Volume Deleted ' +vid) 

Dale un nombre al evento junto con la descripción y haz clic en «Crear regla».

Esto creará una Regla de Evento que activará una función Lambda de destino cada vez que se produzca un cambio en el Estado de las Instancias EC2.

Conclusión

En este artículo, hemos visto cómo crear una Regla de Evento Cloudwatch que indique el cambio en el estado de la instancia EC2 y dispare la Función Lambda cuando la regla coincida con el evento. Puedes seleccionar el objetivo que desees.

También te podría gustar...