maak je een gebeurtenis in AWS Cloudwatch om een Lambda Functie te triggeren

Amazon CloudWatch Events beschrijven veranderingen in AWS bronnen. We kunnen events matchen en ze naar een of meer doelfuncties routeren. CloudWatch Gebeurtenissen komen op de hoogte van operationele veranderingen als ze zich voordoen, b.v. als een gedefinieerde bron in de Cloudwatch Regel is aangemaakt, dan komt de regel daarvan op de hoogte en in ruil daarvoor zal hij een doelfunctie triggeren.

Voor we verder gaan en een event regel maken, laten we eerst de grondbeginselen ervan begrijpen.

  1. Gebeurtenissen:
    Een gebeurtenis betekent dat er een verandering in de AWS Omgeving optreedt.
  2. Regels:
    Regels worden gebruikt om de gebeurtenis te matchen. Hier worden de gebeurtenissen vergeleken en gecontroleerd.
  3. Targets:
    Hier worden de gebeurtenissen verwerkt. Targets kunnen Amazon EC2 instanties, AWS Lambda functies, Kinesis streams, Amazon ECS taken, Step Functions toestandsmachines, Amazon SNS topics, Amazon SQS wachtrijen, en ingebouwde targets zijn.

In dit artikel zullen we een event rule maken die controleert op gebeurtenis van EC2 toestandsverandering en een lambda functie triggert. Ben je niet op de hoogte van Lambda Functie, klik dan hier om er 1 voor je te maken. Wat Lambda doet kun je zelf kiezen, maar in dit document heb ik een Lambda die de ongebruikte EBS Volumes verwijdert. Ik heb de Lambda code in dit artikel vermeld. Je bent vrij om ook je eigen Lambda Functie te gebruiken.

Pre-requisites

  1. AWS Account(Maak aan als je dat nog niet hebt).
  2. Lambda Functie.

Wat zullen we doen?

  1. Log in op AWS.
  2. Maak een Cloudwatch Event Rule om een Lambda Function te triggeren.

Inloggen op AWS

Klik hier om naar de AWS Login pagina te gaan.

Als we op de bovenstaande link klikken, zien we een webpagina als volgt waar we moeten inloggen met onze inloggegevens.

Als je met succes inlogt op je account, zie je het scherm als volgt.

Maak een Cloudwatch Event om een Lambda Functie te triggeren

Om een Cloudwatch Event Rule te maken, zoek je naar cloudwatch en klik je op het resultaat om naar het Cloudwatch dashboard te gaan.

Klik op het Cloudwatch dashboard op Regels onder Gebeurtenissen in het linkerpaneel.

Klik hier in “Regel maken” om je eerste regel te maken om een Lambda Functie in je regio te triggeren.

Selecteer het keuzerondje “Event Pattern”, kies onder Service Name “EC2”, selecteer “EC2 instance state change notification” voor Event Type.

Klik op Add Targets om een bestaande Lambda Function als doel toe te voegen en klik op “Configure details”.

Klik hier om te leren hoe je een Lambda Functie voor je zelf kunt maken. Zoek de volgende referentie Lambda Code voor je op.

Lambda Code: Gebruik deze code om een Lambda Functie te maken als je er geen 1 in je account hebt.

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) 

Geef een naam aan de gebeurtenis samen met de beschrijving en klik op “Creare rule”.

Dit zal een Gebeurtenisregel maken die een doel-Lambda functie zal triggeren telkens als er een verandering is in de toestand van EC2 Instances.

Conclusie

In dit artikel zagen we hoe je een Cloudwatch Event Rule maakt die de verandering in de toestand van de EC2 instance aangeeft en de Lambda Functie triggert als de regel overeenkomt met de gebeurtenis. Je kunt het doel van je keuze kiezen.