- EC2에 접속 시 로그 DB에 저장 (CloudWatch, DynamoDB)2024년 12월 27일
- wngnl05
- 작성자
- 2024.12.27.:50
2024.04.21 - [Aws] - EC2 접속 시 CloudWatch LogGroup에 USER 로그 작성하기
Lambda함수를 3개 만들어줍니다.
1. cloudwatch-function < Trigger - CloudWatch LogGorup >
2. dynamo-db-function
cloudwatch-function Code
더보기import base64 import json import zlib import boto3 def lambda_handler(event, context): # CloudWatch Logs 이벤트 데이터 추출 event_data = event['awslogs']['data'] # base64 디코딩 및 압축 해제 decoded_data = base64.b64decode(event_data) decompressed_data = zlib.decompress(decoded_data, 16 + zlib.MAX_WBITS) # JSON 파싱 log_data = json.loads(decompressed_data) lambda_client = boto3.client('lambda') # 로그 이벤트 메시지 출력 log_events = log_data['logEvents'] for log_event in log_events: print(log_event['message']) # 람다 함수 호출 response = lambda_client.invoke( FunctionName='dynamo-db-function', # 호출할 람다 함수 이름 InvocationType='Event', # 비동기 호출 Payload=json.dumps(log_event['message']) # 전달할 데이터 ) # 처리 결과 반환 return { 'statusCode': 200, 'body': json.dumps('Log data processed successfully!') }
dynamo-db-function Code
더보기import json import boto3 from datetime import datetime def lambda_handler(event, context): # DynamoDB 연결 dynamodb = boto3.resource('dynamodb') # DynamoDB 테이블 선택 (테이블 이름) table = dynamodb.Table('<DynamoDB 테이블 이름>') # 현재 시간 가져오기 (정렬 키 값으로 사용) current_time = datetime.now().isoformat() # DynamoDB에 데이터 삽입 response = table.put_item( Item={ 'test': f"{current_time}", # 파티션 키에 현재시간 설정 'sort_key': "USER_NAME", # 정렬 키 <원하는 값 사용> 'USER': event # CloudWatch LogGroup Data } ) print("Successfully inserted data into DynamoDB:", response) return response
'Aws' 카테고리의 다른 글
Eks Velero 백업 & 복원 하기 (0) 2024.12.27 EC2에 접속 시 로그 DB에 저장 (SQS, DynamoDB) (0) 2024.12.27 CloudWatch LogGroup 로그 Lambda에서 읽기 (0) 2024.12.27 Lambda에서 Lambda 호출 (0) 2024.12.27 ApiGW & Lambda에서 브라우저 분류하기 (0) 2024.12.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)