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: