Amazon CloudWatch Lambda 함수 로그 보기
Lambda 콘솔, CloudWatch Logs 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 Lambda 함수에 대한 CloudWatch 로그를 볼 수 있습니다. 함수 로그에 액세스하려면 다음 섹션의 지침을 따르세요.
콘솔을 사용하여 로그에 액세스
Lambda 콘솔을 사용하여 로그를 보려면
Lambda 콘솔의 함수 페이지
를 엽니다. -
함수를 선택합니다.
-
모니터링 탭을 선택합니다.
-
CloudWatch 로그 보기를 선택합니다.
-
아래로 스크롤하고 확인하고자 하는 함수 간접 호출의 로그 스트림을 선택합니다.
또한 CloudWatch 콘솔에서 함수에 대한 로그에 직접 액세스할 수 있습니다.
CloudWatch 콘솔을 사용하여 로그를 보는 방법
-
CloudWatch 콘솔에서 로그 그룹 페이지
를 엽니다. -
함수의 로그 그룹을 선택합니다. CloudWatch 로그 그룹의 기본 이름 형식은
/aws/lambda/<function_name>
입니다. -
확인하고자 하는 함수 간접 호출의 로그 스트림을 선택합니다.
AWS CLI를 사용하여 로그에 액세스
AWS CLI은(는) 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. 이 섹션의 단계를 완료하려면 다음이 필요합니다.
AWS CLI를 사용하면 --log-type
명령 옵션을 통해 호출에 대한 로그를 검색할 수 있습니다. 호출에서 base64로 인코딩된 로그를 최대 4KB까지 포함하는 LogResult
필드가 응답에 포함됩니다.
예 로그 ID 검색
다음 예제에서는 LogResult
이라는 함수의 my-function
필드에서 로그 ID를 검색하는 방법을 보여줍니다.
aws lambda invoke --function-name my-function out --log-type Tail
다음 결과가 표시됩니다:
{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
예 decode the logs
동일한 명령 프롬프트에서 base64
유틸리티를 사용하여 로그를 디코딩합니다. 다음 예제에서는 my-function
에 대한 base64로 인코딩된 로그를 검색하는 방법을 보여줍니다.
aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
cli-binary-format 옵션은 AWS CLI 버전 2를 사용할 때 필요합니다. 이 설정을 기본 설정으로 지정하려면 aws configure set cli-binary-format raw-in-base64-out
을(를) 실행하세요. 자세한 내용은 AWS CLI 지원되는 글로벌 명령줄 옵션을 AWS Command Line Interface 사용 설명서 버전 2에서 참조하세요.
다음 결과가 표시됩니다.
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB
base64
유틸리티는 Linux, macOS 및 Ubuntu on Windowsbase64 -D
를 사용해야 할 수도 있습니다.
예 get-logs.sh 스크립트
동일한 명령 프롬프트에서 다음 스크립트를 사용하여 마지막 5개 로그 이벤트를 다운로드합니다. 이 스크립트는 sed
를 사용하여 출력 파일에서 따옴표를 제거하고, 로그를 사용할 수 있는 시간을 허용하기 위해 15초 동안 대기합니다. 출력에는 Lambda의 응답과 get-log-events
명령의 출력이 포함됩니다.
다음 코드 샘플의 내용을 복사하고 Lambda 프로젝트 디렉터리에 get-logs.sh
로 저장합니다.
cli-binary-format 옵션은 AWS CLI 버전 2를 사용할 때 필요합니다. 이 설정을 기본 설정으로 지정하려면 aws configure set cli-binary-format raw-in-base64-out
을(를) 실행하세요. 자세한 내용은 AWS CLI 지원되는 글로벌 명령줄 옵션을 AWS Command Line Interface 사용 설명서 버전 2에서 참조하세요.
#!/bin/bash aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out sed -i'' -e 's/"//g' out sleep 15 aws logs get-log-events --log-group-name /aws/lambda/
my-function
--log-stream-namestream1
--limit 5
예 macOS 및 Linux(전용)
동일한 명령 프롬프트에서 macOS 및 Linux 사용자는 스크립트가 실행 가능한지 확인하기 위해 다음 명령을 실행해야 할 수 있습니다.
chmod -R 755 get-logs.sh
예 마지막 5개 로그 이벤트 검색
동일한 명령 프롬프트에서 다음 스크립트를 실행하여 마지막 5개 로그 이벤트를 가져옵니다.
./get-logs.sh
다음 결과가 표시됩니다.
{ "StatusCode": 200, "ExecutedVersion": "$LATEST" } { "events": [ { "timestamp": 1559763003171, "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n", "ingestionTime": 1559763003309 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r \"key\": \"value\"\r}\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n", "ingestionTime": 1559763018353 } ], "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795", "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080" }