CloudWatch > 로그 그룹
을 통해 CloudWatch에 저장
할 수 있습니다.Lambda 함수
를 모니터링할 수 있습니다.CloudWatch Logs
와 자동으로 통합되며 코드의 모든 로그를 /aws/lambda/<함수 이름>
라는 이름으로 Lambda 함수와 연결된 CloudWatch Logs
그룹에 푸시합니다.참고
- 함수 호출 후 로그가 표시되는데
5~10
분 정도 소요될 수 있습니다.
Lambda 함수가 CloudWatch > 로그 그룹
에 로그를 업로드하려면 실행 역할
을 부여해야 합니다.
Lambda용 역할
을 하나 생성합니다.
Lambda에서 제공하는 AWSLambdaBasicExecutionRole
AWS 관리형 정책을 역할에 연결
합니다.
기존에 역할이 있는 경우
AWSLambdaBasicExecutionRole
를 기존 역할에 연결해주면 됩니다.
AWS CLI를 통해 기존 역할에 정책 연결 방법
$ aws iam attach-role-policy --role-name <역할 이름> --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
python
으로 로그를 반환하는 함수를 생성해보겠습니다.
[Lambda 콘솔] > [함수] > [함수 생성]
사전에 생성한 실행 역할
을 지정해주겠습니다.
함수를 생성하고, AWS 공식 문서 - 로그를 반환하는 함수(python)을 참고해 코드 소스
에 아래의 코드를 입력합니다.
# lambda_function.py
import os
def lambda_handler(event, context):
print('## ENVIRONMENT VARIABLES')
print(os.environ)
print('## EVENT')
print(event)
Test
버튼을 눌러 테스트 해볼 수 있습니다.Test
버튼을 눌러 테스트 이벤트를 구성합니다.
테스트 이벤트
를 만들면, 코드가 실행되고 아래와 같이 Function Logs
가 발생합니다.
START RequestId: 630633a4-e81c-413d-ad13-48d142cdffce Version: $LATEST
## ENVIRONMENT VARIABLES
environ({'AWS_LAMBDA_FUNCTION_VERSION': '$LATEST', 'AWS_SESSION_TOKEN': 'IQoJb3JpZ2luX2VjECAaDmFwLW5vcnRoZWFzdC0yIkYwRAIgC4LHBBwksyV0I4rOmHFqcH+VJNcuIW0jgAY2r3wQTMcCICk4u7xe/gTGD6TfO1vTUgDRFNN9AFyS5BIwSrtpjYtzKqECCCkQAxoMNzk3NTg3OTIyMDA2Igz4HKLkOvmIYw2g/jQq/gFFiinoUz3T8XfZizSjtdU0XPZQ2xZcGPpGdCXCmwY4GhOmSfzxeaaJoepH7V0vUYZ5139Gu4HkOibGpGfmFVSdU7jf3tQZxq7TYSXmXytGh7J8AAsSTMLgaM9moyIFRO9m+WWAxH2skVyhspiUAIgBlEdWjHJu6Tw2jpY7WNvgi7ccaemn21BAcSEeRnXLCZmwiy+hGcmlM7CnLNrcYV48WEtjFQca21o7afMyBgJF0MfKHMel/ttov1R4XOFWCsfdHzsDfV1La0qyHok05CyUY7ECH5Gx7MrKu65aDrlZmEZSDjmepeB4hB87Vp6eP7ueEFbXDRjJgj1mDH+lKTD58IuVBjqbATEmYKoOw1dyAtLTA94gMrVg6I5Kt3pn95iV0qFWRjsM/L3xjy/elKljSj2VfaDJ7GNY6dLnAWwtlIYmhvwnu7RClnUUKkDYgq9rC6bu0Zdb5RUSfkdKowZCFY2hLv+O2nOnaBDaYxj1IVN/BWB5PTtTFhFznNaV+2Qcjeh69f5hCOghLCpfSlDzDthdezo/fKAHINfJvKXPToiY', 'AWS_LAMBDA_LOG_GROUP_NAME': '/aws/lambda/test-hyeob-lambda-cloudwatch', 'LD_LIBRARY_PATH': '/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib', 'LAMBDA_TASK_ROOT': '/var/task', 'AWS_LAMBDA_LOG_STREAM_NAME': '2022/06/10/[$LATEST]76fd299ada384374804e6c6fb0a464a2', 'AWS_LAMBDA_RUNTIME_API': '127.0.0.1:9001', 'AWS_EXECUTION_ENV': 'AWS_Lambda_python3.9', 'AWS_LAMBDA_FUNCTION_NAME': 'test-hyeob-lambda-cloudwatch', 'AWS_XRAY_DAEMON_ADDRESS': '169.254.79.129:2000', 'PATH': '/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin', 'AWS_DEFAULT_REGION': 'ap-northeast-2', 'PWD': '/var/task', 'AWS_SECRET_ACCESS_KEY': 'Z+Vx7jMY4QiRUI27sEpGAyNDyH5Du4xTu2MU9+ga', 'LAMBDA_RUNTIME_DIR': '/var/runtime', 'LANG': 'en_US.UTF-8', 'AWS_LAMBDA_INITIALIZATION_TYPE': 'on-demand', 'AWS_REGION': 'ap-northeast-2', 'TZ': ':UTC', 'AWS_ACCESS_KEY_ID': 'ASIA3TM7R3RLEF27RDQB', 'SHLVL': '0', '_AWS_XRAY_DAEMON_ADDRESS': '169.254.79.129', '_AWS_XRAY_DAEMON_PORT': '2000', 'AWS_XRAY_CONTEXT_MISSING': 'LOG_ERROR', '_HANDLER': 'lambda_function.lambda_handler', 'AWS_LAMBDA_FUNCTION_MEMORY_SIZE': '128', 'PYTHONPATH': '/var/runtime', '_X_AMZN_TRACE_ID': 'Root=1-62a2f879-6c93843e77fea6f332586fe9;Parent=7601babc006e0bcc;Sampled=0'})
## EVENT
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
END RequestId: 630633a4-e81c-413d-ad13-48d142cdffce
REPORT RequestId: 630633a4-e81c-413d-ad13-48d142cdffce Duration: 1.33 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 35 MB Init Duration: 121.61 ms
Python 런타임은 각 호출에 대해 START
, END
및 REPORT
줄을 로깅합니다.
보고서 행은 다음과 같은 세부 정보를 제공합니다.
보고서 로그
RequestId
– 호출의 고유한 요청 ID입니다.
Duration
– 함수의 핸들러 메서드가 이벤트를 처리하는 데 걸린 시간입니다.
Billed Duration
– 호출에 대해 청구된 시간입니다(가격과 연관).
Memory Size
- 함수에 할당된 메모리 양입니다.
Max Memory Used
– 함수에서 사용한 메모리 양입니다.
Init Duration
– 제공된 첫 번째 요청의 경우 런타임이 핸들러 메서드 외부에서 함수를 로드하고 코드를 실행하는 데 걸린 시간입니다.
XRAY TraceId
– 추적된 요청의 경우 AWS X-Ray 추적 ID입니다.
SegmentId
- 추적된 요청의 경우 X-Ray 세그먼트 ID입니다.
샘플링 완료(Sampled)
– 추적된 요청의 경우 샘플링 결과입니다.
Lambda 콘솔
> 함수
함수를 선택
합니다.모니터링
을 선택합니다.CloudWatch에서 로그 보기
를 선택합니다.CloudWatch > 로그 그룹 > /aws/lambda/<Lambda 함수 이름>
로 이동됩니다.
로그 스트림
을 클릭해보면 이전의 Function Logs
의 내용이 보이는 것을 확인할 수 있습니다.
각 로그 스트림은 함수의 인스턴스
에 해당합니다. 로그 스트림은 Lambda 함수를 업데이트
할 때, 그리고 여러 동시 호출을 처리
하기 위해 추가 인스턴스가 생성될 때 나타납니다.
특정 호출에 대한 로그를 찾으려면 AWS X-Ray
로 함수를 계측하는 것이 좋습니다. X-Ray
는 요청 및 로그 스트림에 대한 세부 정보를 기록합니다.
이렇게 CloudWatch > 로그 그룹 > /aws/lambda/<Lambda 함수 이름>
에 Lambda 함수의 호출
에 대한 로그를 기록하고 조회할 수 있습니다.