Lambda 함수 실행 시 CloudWatch Logs에 로그를 남겨봤습니다.
안녕하세요 클래스메소드 김재욱(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"
}
]
}
전체적인 코드는 아래 블로그를 참고하고 있습니다.
각 항목에 대한 설명은 아래 표에서 확인할 수 있습니다.
권한 (Action) | 설명 |
---|---|
logs:CreateLogGroup |
로그 그룹이 없을 경우 새 로그 그룹을 생성하는 권한 |
logs:CreateLogStream |
로그 그룹 내에 로그 스트림을 생성하는 권한 |
logs:PutLogEvents |
로그 스트림에 로그 데이터를 기록하는 권한 |
Lambda 함수에서 별도 코드가 필요?
Lambda 함수에 logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents 권한이 포함된 IAM Role만 연결되어 있다면 CloudWatch Logs에 로그를 남기기 위한 별도의 코드 작성은 필요하지 않습니다.
Lambda 함수를 생성할 때 CloudWatch로 접근하기 위한 권한을 가진 IAM 역할만 연결합시다.
로그 확인
Lambda 함수를 실행했다면, CloudWatch 콘솔 화면에서 로그를 확인할 수 있습니다.
※ CloudWatch 콘솔 → 로그 그룹 → /aws/lambda/<함수이름> 경로에서 확인
로그 그룹을 클릭해 보면 로그 스트림(Log Stream)을 확인할 수 있습니다.
해당 로그 스트림을 클릭해 보면, 아래와 같은 로그를 확인할 수 있습니다.
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 함수의 문제 원인 분석과 트러블슈팅에 중요한 역할을 합니다.
문의 사항은 클래스메소드 코리아로!
클래스메소드 코리아에서는 다양한 세미나 및 이벤트를 진행하고 있습니다.
진행중인 이벤트는 아래 페이지를 참고해주세요.
AWS에 대한 상담 및 클래스 메소드 멤버스에 관한 문의사항은 아래 메일로 연락주시면 감사드립니다!
Info@classmethod.kr