Necesita recibir correos electrónicos cuando alguien crea una instancia EC2 en AWS. He intentado usar cloudwatch pero parece que no funciona para mí. Dice datos insuficientes. Hay una mejor manera de hacerlo?
Creación de alarmas de CloudWatch para eventos de CloudTrail
Paso 1: cree una regla de vigilancia en la nube para notificar la creación. Según el ciclo de vida de la instancia EC2 cuando se presiona el botón de inicio. La instancia pasa del estado Pendiente al estado En ejecución. Así que crea la Regla para el estado Pendiente
Cree una regla de vigilancia en la nube como se especifica en la captura de pantalla de la imagen
Paso 2: crea una función de paso. Porque Cloud Trail registra todos los eventos en la cuenta con un retraso de al menos 20 minutos. Esta función de paso es útil si desea el nombre del usuario que ha creado la instancia.
{ "StartAt": "Wait", "States": { "Wait": { "Type": "Wait", "Seconds": 1800, "Next": "Ec2-Alert" }, "Ec2-Alert":{ "Type": "Task", "Resource":"arn:aws:lambda:ap-south-1:321039853697:function:EC2-Creation-Alert", "End": true } } }Paso 3: cree un tema de SNS para la notificación
Paso 4: escriba una función lambda para obtener el registro de Cloud Trail y obtener el nombre de usuario que creó la instancia.
import json import os import subprocess import boto3 def lambda_handler(event, context): client = boto3.client('cloudtrail') client1 = boto3.client('sns') Instance=event["detail"]["instance-id"] response = client.lookup_events( LookupAttributes=[ { 'AttributeKey': 'ResourceName', 'AttributeValue': Instance }, ], MaxResults=1) test=response['Events'] st="".join(str(x) for x in test) print(st) user=st.split("Username")[1] finalname=user.split(",") Creator=finalname[0] #print(st[st.find("Username")]) Email= "Hi All ,\n\n\n The User%s has created new EC2-Instance in QA account and the Instance id is %s \n\n\n Thank you \n\n\n Regard's lamda"%(Creator,Instance) response = client1.publish( TopicArn='arn:aws:sns:ap-south-1:321039853697:Ec2-Creation-Alert', Message=Email ) # TODO implement return { 'statusCode': 200, }Nota: este código activa una notificación si la instancia cambia del estado detenido al estado en ejecución.