From 2a842c607fce3c1200dfee83f770a7b7424a6478 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Thu, 26 Jan 2023 09:16:42 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20logs=E3=82=B5=E3=83=96=E3=82=B9?= =?UTF-8?q?=E3=82=AF=E3=83=AA=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3=E3=83=95?= =?UTF-8?q?=E3=82=A3=E3=83=AB=E3=82=BF=E3=81=8B=E3=82=89=E3=80=81SNS?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E3=82=92=E8=A1=8C=E3=81=86Lambda=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=82=92Python=E3=81=AB=E3=83=AA=E3=83=97=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lambda/PublishFromLog/publish_from_log.py | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lambda/PublishFromLog/publish_from_log.py diff --git a/lambda/PublishFromLog/publish_from_log.py b/lambda/PublishFromLog/publish_from_log.py new file mode 100644 index 00000000..b6200cc7 --- /dev/null +++ b/lambda/PublishFromLog/publish_from_log.py @@ -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)