0

When an EC2 instance runs for more than 8 hours, I need to receive an SNS notification. I tried multiple ways to get value but still got a unexcepted value as output.

import json
import boto3
from datetime import datetime
from datetime import timedelta

region ='ap-south-1'
ec2 = boto3.resource('ec2',region)
client = boto3.client('ec2',region)

def lambda_handler(event, context):
    ec2 = boto3.resource('ec2')
    sns = boto3.client('sns')
    instances = ec2.instances.filter(Filters=[{'Name':'tag:Session', 'Values':['active']}])
    active = ''
    for instance in instances:
        instanceStartTime = instance.launch_time.strftime("%Y-%m-%d %H:%M:%S")
        currentTime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        
        date_time_obj1 = datetime.strptime(instanceStartTime, '%Y-%m-%d %H:%M:%S')
        date_time_obj2 = datetime.strptime(currentTime, '%Y-%m-%d %H:%M:%S')
        timeDiff = date_time_obj2 - date_time_obj1
        
        active += '\n Instance Id : ' + instance.id
        active += '\n Instance Start Time : ' + instanceStartTime
        active += '\n current Time : ' + currentTime
        active += '\n Running Time : ' + str(timeDiff) + '\n\n'
        
        if str(timeDiff)>='08:00:00':
        response = sns.publish(
                TopicArn='arn:aws:sns:ap-south-1:1234566789:test-sns',
                Message='Current Active Instances ' + active,
                )
                return response

output:

enter image description here

0 Answers0