feat: logsサブスクリプションフィルタから、SNS通知を行うLambda関数をPythonにリプレース

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-01-26 09:16:42 +09:00
parent b67ca6a9d9
commit 2a842c607f

View File

@ -0,0 +1,29 @@
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)