Lambda 함수 실행 시 CloudWatch Logs에 로그를 남겨봤습니다.

Lambda 함수 실행 시 CloudWatch Logs에 로그를 남겨봤습니다.

Lambda 함수 실행 시 CloudWatch Logs에 로그를 남겨봤습니다.
Clock Icon2025.06.16

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Lambda 함수 실행 시 CloudWatch Logs에 로그를 남겨봤습니다.

IAM 정책 및 역할 준비

먼저 Lambda 함수가 CloudWatch로 접근하기 위해서는 권한이 필요합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "arn:aws:sns:ap-northeast-2:xxxxxxxxxxx"
        }
    ]
}

전체적인 코드는 아래 블로그를 참고하고 있습니다.

https://dev.classmethod.jp/articles/jw-aws-cloudtrail-detects-security-group-changes-and-uses-lambda-and-eventbridge-to-notify-you-of-email/#iam-%25EC%25A0%2595%25EC%25B1%2585-%25EB%25B0%258F-%25EC%2597%25AD%25ED%2595%25A0-%25EC%25A4%2580%25EB%25B9%2584

각 항목에 대한 설명은 아래 표에서 확인할 수 있습니다.

권한 (Action) 설명
logs:CreateLogGroup 로그 그룹이 없을 경우 새 로그 그룹을 생성하는 권한
logs:CreateLogStream 로그 그룹 내에 로그 스트림을 생성하는 권한
logs:PutLogEvents 로그 스트림에 로그 데이터를 기록하는 권한

Lambda 함수에서 별도 코드가 필요?

Lambda 함수에 logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents 권한이 포함된 IAM Role만 연결되어 있다면 CloudWatch Logs에 로그를 남기기 위한 별도의 코드 작성은 필요하지 않습니다.

Lambda 함수를 생성할 때 CloudWatch로 접근하기 위한 권한을 가진 IAM 역할만 연결합시다.

jw-sgtestcloud-2

로그 확인

Lambda 함수를 실행했다면, CloudWatch 콘솔 화면에서 로그를 확인할 수 있습니다.
※ CloudWatch 콘솔 → 로그 그룹 → /aws/lambda/<함수이름> 경로에서 확인

jw-sgtestcloud-3

로그 그룹을 클릭해 보면 로그 스트림(Log Stream)을 확인할 수 있습니다.

jw-sgtestcloud-4

해당 로그 스트림을 클릭해 보면, 아래와 같은 로그를 확인할 수 있습니다.

START RequestId: a1b2c3d4-e5f6-7890-1234-abcdefg12345 Version: $LATEST
2025-06-11T02:30:12.123Z a1b2c3d4-e5f6-7890-1234-abcdefg12345 INFO Lambda 실행됨
END RequestId: a1b2c3d4-e5f6-7890-1234-abcdefg12345
REPORT RequestId: a1b2c3d4-e5f6-7890-1234-abcdefg12345 Duration: 25.45 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 40 MB

이 로그 스트림에 대해 간략히 설명하자면 다음과 같습니다.

  • Lambda 함수의 실행 단위별로 생성되는 로그 저장 공간입니다.
  • 하나의 Lambda 함수가 여러 번 실행될 때마다 CloudWatch는 새로운 로그 스트림을 생성합니다.
  • 로그 스트림의 이름은 대개 날짜 + 무작위 ID 조합 형태입니다.

로그 스트림은 [START, INFO, END, REPORT] 와 같은 구성을 포함하고 있는데, 각 설명은 아래 표를 통해 확인할 수 있습니다.

로그 구분 의미
START 해당 요청(RequestId)으로 Lambda 함수 실행 시작
INFO 또는 PRINT 사용자가 Lambda 코드에서 출력한 로그 메시지 (예: console.log, print)
END Lambda 함수 실행 종료
REPORT 실행 시간, 청구 시간, 메모리 사용량 등의 요약 정보

마무리

로그 스트림은 Lambda 함수의 문제 원인 분석과 트러블슈팅에 중요한 역할을 하기 때문에 Lambda 함수를 생성할 때 반드시 로그를 남겨두도록 합시다. 로그 스트림의 쓰임새는 간단히 요약하자면 다음과 같습니다.

  • Lambda 로그 스트림은 개별 실행별 상세 로그를 제공하므로, 문제 발생 시 어느 시점에서 오류가 났는지 정확히 알 수 있습니다.
  • 이를 통해 코드 오류, 환경 문제, 시간 초과, 리소스 부족 등 다양한 이슈를 효과적으로 파악하고 해결할 수 있습니다.
  • AWS CloudWatch 콘솔에서 로그를 모니터링하거나, 필요시 로그를 다운로드하여 심층 분석할 수도 있습니다.

마지막으로 이번 블로그를 전체적으로 요약하자면 다음과 같습니다.

  • Lambda 함수에 CloudWatch 권한을 할당하면 실행될 때마다 새로운 로그 스트림이 생성되어 해당 실행 기록이 저장됩니다.
  • 로그 스트림은 함수 실행 단위별로 나누어져 있어, 각 실행의 로그를 독립적으로 확인할 수 있습니다.
  • CloudWatch 로그 콘솔에서 /aws/lambda/<함수이름> 로그 그룹 내 로그 스트림을 확인할 수 있습니다.
  • 로그 스트림은 Lambda 함수의 문제 원인 분석과 트러블슈팅에 중요한 역할을 합니다.

문의 사항은 클래스메소드 코리아로!

클래스메소드 코리아에서는 다양한 세미나 및 이벤트를 진행하고 있습니다.
진행중인 이벤트는 아래 페이지를 참고해주세요.

https://classmethod.kr/board/library

AWS에 대한 상담 및 클래스 메소드 멤버스에 관한 문의사항은 아래 메일로 연락주시면 감사드립니다!
Info@classmethod.kr

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.