[파이썬] AWS Lambda와 S3를 통한 로그 분석 및 모니터링

이번 블로그 포스트에서는 AWS Lambda와 S3를 이용하여 로그를 분석하고 모니터링하는 방법에 대해 알아보겠습니다. AWS Lambda는 서버리스 컴퓨팅 서비스로, 이벤트에 반응하여 실행되는 코드를 작성할 수 있게 해줍니다. S3는 Amazon Simple Storage Service로, 파일을 안전하게 저장하고 검색할 수 있는 스토리지 서비스입니다.

Lambda 함수 생성하기

첫 번째로, AWS Lambda에서 함수를 생성합니다. AWS Management Console로 들어가서 Lambda 서비스를 선택한 다음 “함수 만들기”를 클릭합니다. 함수 이름을 “log-monitoring”으로 정하고, 런타임은 “Python”을 선택합니다.

함수 코드를 작성하기 위해 코드 에디터를 열고 아래와 같은 코드를 입력합니다.

import boto3

def lambda_handler(event, context):
    # S3 버킷 이름과 파일 경로를 설정합니다.
    bucket_name = 'my-log-bucket'
    file_key = 'logs/log.txt'
    
    # S3 클라이언트를 생성합니다.
    s3_client = boto3.client('s3')
    
    # S3에서 로그 파일을 다운로드합니다.
    response = s3_client.get_object(Bucket=bucket_name, Key=file_key)
    log_data = response['Body'].read().decode('utf-8')
    
    # 로그 데이터를 분석하고 모니터링합니다.
    analyze_logs(log_data)

def analyze_logs(log_data):
    # 로그 데이터를 분석하는 코드를 작성합니다.
    # 분석 결과를 활용하여 필요한 액션을 수행합니다.
    pass

위 코드는 Lambda 함수에서 S3 버킷에서 로그 파일을 다운로드하고, 다운로드한 로그 데이터를 분석하는 기본적인 구조를 보여줍니다. my-log-bucketlogs/log.txt는 실제로 존재하는 S3 버킷 이름과 로그 파일 경로로 바꿔야 합니다. 분석 로직은 analyze_logs() 함수 안에서 작성하면 됩니다.

S3 이벤트 트리거 설정하기

로그 파일이 업로드되면 Lambda 함수가 자동으로 실행되도록 하기 위해 S3 버킷에 이벤트 트리거를 설정해야 합니다.

AWS Management Console로 돌아가서 S3 서비스로 이동합니다. 로그 파일이 업로드될 버킷을 선택하고, “속성” 탭을 클릭한 다음 “이벤트” 섹션으로 이동합니다.

“이벤트 추가” 버튼을 클릭하고 아래와 같이 이벤트 구성을 설정합니다.

이제 로그 파일이 logs/ 폴더에 .txt 확장자로 업로드되면 Lambda 함수가 실행됩니다.

Lambda 함수 테스트하기

완성된 Lambda 함수를 테스트해보겠습니다. AWS Management Console 상단에서 “테스트” 버튼을 클릭합니다. 이벤트 템플릿 중 하나를 선택하거나 직접 이벤트를 작성할 수 있습니다. 이번에는 “Hello World”를 선택하겠습니다.

“테스트” 버튼을 클릭하면 Lambda 함수가 실행되고, 로그 분석 함수인 analyze_logs()에 “Hello World”가 전달되어야 합니다. 실제로 로그 데이터를 분석하는 코드를 작성하여 테스트를 진행하면 됩니다.

결과 및 결론

이번 블로그 포스트에서는 AWS Lambda와 S3를 통해 로그 분석 및 모니터링하는 방법을 살펴보았습니다. Lambda 함수를 사용하여 S3에서 로그 파일을 다운로드하고 분석하는 간단한 예제를 통해 기본적인 로그 처리 과정을 이해할 수 있었습니다. 실제로는 로그 데이터를 분석하고 필요한 액션을 수행하는 로직을 구현하여 로그 모니터링 시스템을 구축할 수 있습니다.