import boto3 from botocore.exceptions import ClientError from datetime import datetime lambdas = [] with open("lambdas-list.txt", "r") as f: lines = f.readlines() for line in lines: lambdas.append(line.rstrip("\n")) for lambda_name in lambdas: log_g_name = "/aws/lambda/" + lambda_name # had to add the region here to make it work client = boto3.client("logs", region_name="us-east-1") try: ## For the latest stream_response = client.describe_log_streams( logGroupName=log_g_name, orderBy="LastEventTime", descending=True, limit=1, ) if len(stream_response['logStreams']) == 0: print(f"{lambda_name} no recorded events") else: log_stream_name = stream_response['logStreams'][0]['logStreamName'] # Get the latest log event from the log stream response = client.get_log_events( logGroupName=log_g_name, logStreamName=log_stream_name, limit=1, startFromHead=False ) #pprint(response) if len(response['events']) == 0: timestamp = stream_response['logStreams'][0]['creationTime'] latest_event_time = datetime.fromtimestamp(timestamp / 1000.0).strftime('%Y-%m-%d %H:%M:%S') else: latest_event = response['events'][0] timestamp = latest_event['timestamp'] # Convert the timestamp to a human-readable format latest_event_time = datetime.fromtimestamp(timestamp / 1000.0).strftime('%Y-%m-%d %H:%M:%S') print(f"{lambda_name} {latest_event_time}") except ClientError as e: if e.response['Error']['Code'] == 'ResourceNotFoundException': print(f"{lambda_name} log group {log_g_name} does not exist, no recorded events") else: raise e