30 lines
800 B
Python
30 lines
800 B
Python
import base64
|
|
import gzip
|
|
import json
|
|
import os
|
|
from io import BytesIO
|
|
|
|
import boto3
|
|
|
|
sns_client = boto3.client('sns')
|
|
|
|
def lambda_handler(event, context):
|
|
awslogs_dict = event.get('awslogs')
|
|
base64_data = awslogs_dict.get('data')
|
|
try:
|
|
decoded_gzip_data = base64.b64decode(base64_data)
|
|
except Exception as e:
|
|
raise e
|
|
log_event_str = gzip.GzipFile(fileobj=BytesIO(decoded_gzip_data)).read()
|
|
log_event = json.loads(log_event_str)
|
|
|
|
publish_message = {
|
|
'Subject': f'Detect Error(or Warning) in {log_event.get("logGroup")}',
|
|
'Message': '\n'.join([log.get('message') for log in log_event.get('logEvents')]),
|
|
'TopicArn': os.environ.get('SNS_TOPIC_ARN')
|
|
}
|
|
|
|
print(publish_message)
|
|
|
|
sns_client.publish(**publish_message)
|