CloudWatch에서 Lambda 로그 확인하기

Googy·2024년 3월 5일
0
post-thumbnail

[ AWS Lambda ] 에서 람다 함수에 대해서 알아보았다. 이번에는 Lambda의 로그를 확인하는 방법을 알아보자.

Logging 코드 (Python)

import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)

def main():
    logger.debug("Debug[Level: 10]")
    logger.info("Info[Level: 20]")
    logger.warning("Warning[Level: 30]")
    logger.error("Error[Level: 40]")
    logger.critical("Critical[Level: 50]")

if __name__ == '__main__':
    main()
Info[Level: 20]
Warning[Level: 30]
Error[Level: 40]
Critical[Level: 50]

Python에서 로그를 출력하는 간단한 예제를 가져왔다. 로그는 설정한 Level 이상의 로그만 출력된다. 위 코드에서는 INFO level 이상의 로그만 출력된다.

Logging level

함수Level용도
debug10디버깅 내용 출력
info20작업 내용 확인
warning30경고 표시
error40에러 출력
critical50시스템의 심각한 문제 알림

https://docs.python.org/3/library/logging.html

AWS Lambda log

AWS Lambda에서 출력한 내용은 CloudWatch에서 확인할 수 있다.

권한

AWS Lambda 함수를 생성할 때 역할을 생성하도록 하면, CloudWatch 로그 그룹을 생성하고 해당 로그 그룹에 로그를 작성할 수 있는 권한이 생성된다.

Example

import json
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
    logger.debug("Debug: %s" %event)
    logger.info("Info: %s" %event)
    logger.warning("Warning: %s" %event)
    logger.error("Error: %s" %event)
    logger.critical("Critical: %s" %event)
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

예제를 Test로 실행하고 CloudWatch에서 확인해 보자.

Amazon CloudWatch

AWS Lambda 로그

로그 스트림에서 함수 실행 전후로 START, END, REPORT 정보를 Request ID와 함께 출력해 주는 것을 확인할 수 있다. Logging 함수로 출력한 로그에도 Request ID가 Prefix로 들어가 있다.

Live Tail

Live tail은 CloudWatch의 로그를 실시간으로 확인할 수 있는 기능이다. 로그 그룹을 선택해 시작한 후, Lambda에서 테스트를 실행하면, 로그를 실시간으로 확인할 수 있을 것이다.

Log Insights

Log Insights에서는 쿼리를 통해서 원하는 로그를 검색할 수 있다. 위처럼 like 키워드를 이용해서 특정 단어가 포함된 로그를 검색할 수 있다.

특정 로그를 처음부터 끝까지 보고 싶다면 @requestId 필드를 조건으로 검색해 보자.

CloudWatch 로그 인사이트 쿼리 구문 에서 자세한 쿼리 문법을 확인할 수 있다.

profile
재밌는 걸 만들고 싶어요

0개의 댓글