Los eventos de Amazon CloudWatch describen los cambios en los recursos de AWS. Podemos hacer coincidir eventos y enrutarlos a una o más funciones de destino. CloudWatch Events se entera de los cambios operativos a medida que ocurren, p. si se ha creado un recurso definido en la regla de Cloudwatch, la regla lo conocerá y, a cambio, activará una función de destino.
Antes de continuar y crear una regla de evento, entendamos los conceptos básicos.
- Eventos :
Un evento significa que hay un cambio en el entorno de AWS. - Reglas :
Las reglas se utilizan para coincidir con el evento. Aquí se comparan y verifican los eventos. - Objetivos :
Aquí se procesan los eventos. Los destinos pueden incluir instancias de Amazon EC2, funciones de AWS Lambda, secuencias de Kinesis, tareas de Amazon ECS, máquinas de estado de Step Functions, temas de Amazon SNS, colas de Amazon SQS y destinos integrados.
En este artículo, crearemos una regla de eventos que verificará el evento de cambio de estado de EC2 y activará una función lambda. Si no conoce la función Lambda, haga clic aquí para crear una para usted. Lo que haga Lambda puede ser su elección, pero en este documento tengo un Lambda que elimina los volúmenes de EBS no utilizados. He mencionado el código Lambda en este artículo. También puede usar su propia función Lambda.
Requisitos previos
- Cuenta de AWS (cree si no tiene una).
- Función Lambda.
¿Qué haremos?
- Inicie sesión en AWS.
- Cree una regla de evento de Cloudwatch para activar una función Lambda.
Iniciar sesión en AWS
Haga clic aquí para ir a la página de inicio de sesión de AWS.
Cuando hagamos clic en el enlace anterior, veremos una página web como la siguiente en la que debemos iniciar sesión con nuestros datos de inicio de sesión.
Una vez que inicie sesión con éxito en su cuenta, verá la siguiente pantalla.
Crea un evento de Cloudwatch para activar una función Lambda
Para crear una regla de eventos de Cloudwatch, busque cloudwatch y haga clic en el resultado para ir al panel de control de Cloudwatch.
En el panel de control de Cloudwatch, haga clic en Reglas debajo de Eventos en el panel izquierdo.
Aquí, haga clic en "Crear regla" para crear su primera regla para activar una función Lambda en su región.
Seleccione el botón de radio "Patrón de evento", en Nombre del servicio, seleccione "EC2", seleccione "Notificación de cambio de estado de instancia EC2" para Tipo de evento.
Haga clic en Agregar objetivos para agregar una función Lambda existente como objetivo y haga clic en "Configurar detalles".
Haga clic aquí para aprender a crear una función Lambda para usted. Encuentre el siguiente código Lambda de referencia para usted.
Código Lambda: Use este código para crear una función Lambda si no tiene 1 en su 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 haya un cambio en el estado de las instancias EC2.
Conclusión
En este artículo, vimos cómo crear una regla de evento de Cloudwatch que indica el cambio en el estado de la instancia EC2 y activa la función Lambda cuando la regla coincide con el evento. Puede seleccionar el objetivo de su elección.