[파이썬] 파이썬 애플리케이션의 AWS Lambda 디버깅 및 로깅 설정

AWS Lambda는 클라우드에서 실행되는 서버리스 컴퓨팅 서비스로써, 파이썬 애플리케이션을 배포하고 실행하는 데 매우 효과적입니다. 그러나 Lambda 함수가 실제로 실행되는 서버를 직접 관리하지 않기 때문에 디버깅과 로깅이 도전적일 수 있습니다.

이 블로그 포스트에서는 파이썬 애플리케이션의 AWS Lambda 함수를 디버깅하고 로깅 설정하는 방법을 알아보겠습니다.

디버깅

CloudWatch Logs 설정

AWS Lambda는 기본적으로 Amazon CloudWatch Logs에 로깅을 수행합니다. CloudWatch Logs를 이용하여 Lambda 함수의 실행 로그를 볼 수 있습니다.

CloudWatch Logs 설정을 하기 위해 AWS Management Console에서 Lambda 함수를 선택하고 환경 설정으로 이동합니다. “로그 그룹 생성” 버튼을 클릭하여 새로운 로그 그룹을 생성합니다. 이로써 함수의 로그는 해당 로그 그룹에 저장됩니다.

로깅 추가

디버깅을 위해 별도의 로그를 생성할 수도 있습니다. 파이썬에서는 기본적으로 print 문을 사용하여 로그를 생성할 수 있습니다. Lambda 함수 실행 중에는 CloudWatch Logs에 로그가 기록되지 않을 수 있으므로, print문을 사용하여 중간 결과를 확인하면 디버깅에 도움이 됩니다.

또한, 파이썬 표준 라이브러리에서는 logging 모듈을 제공하여 로깅을 더욱 효과적으로 관리할 수 있습니다. 아래의 예제를 참고하여 로깅을 설정할 수 있습니다.

import logging

# 로그 레벨 설정
logging.basicConfig(level=logging.INFO)

def lambda_handler(event, context):
    # 로그 메시지 출력
    logging.info('Lambda function executed')
    
    # 디버깅을 위한 코드 작성
    print('Debug message')
    
    # 로그 메시지 출력
    logging.info('Processing event: {}'.format(event))
    
    # Lambda 함수의 주요 로직 작성
    ...

위의 예제에서는 logging.basicConfig 함수를 사용하여 로그 레벨을 INFO로 설정하였습니다. 이후 logging.info 함수를 사용하여 로그 메시지를 출력할 수 있습니다.

디버깅된 로그 확인

디버깅된 로그는 CloudWatch Logs에서 확인할 수 있습니다. AWS Management Console에서 로그 그룹을 선택하고 로그 스트림을 확인하여 Lambda 함수의 실행 로그를 살펴볼 수 있습니다. 또한, print문으로 출력한 로그 또한 같은 로그 그룹 내에서 확인할 수 있습니다.

정상적으로 디버깅된 로그를 확인하려면 Lambda 함수를 실행하고 로그를 실시간으로 모니터링하는 것이 좋습니다. 이를 위해 CloudWatch Logs의 실시간 모니터링 기능을 사용하거나 AWS CLI (aws logs tail)를 사용할 수 있습니다.

결론

AWS Lambda에서 파이썬 애플리케이션을 디버깅하고 로깅을 설정하는 방법에 대해 알아보았습니다. CloudWatch Logs를 사용하여 로그를 확인하고, print문과 logging 모듈을 사용하여 로깅을 수행할 수 있습니다. 이를 통해 Lambda 함수의 실행 과정을 디버깅하고 문제를 해결할 수 있습니다.