• 프로필사진
    Home
  • Portfolio
  • github [#ffffff] Created with Sketch.
    Github
  • linkedin
    Linkedin
  • Setting
  • Posting
    • 분류 전체보기 (105)
      • Aws (96)
      • Backend (3)
      • Extension (1)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바