AWS Lambda
개발자 가이드

AWS Lambda 함수 로깅(C#)

Lambda 함수는 CloudWatch Logs 로그 그룹과 함께 제공되며, 함수의 각 인스턴스에 대한 로그 스트림을 포함합니다. 런타임은 각 호출에 관한 세부 정보를 로그 스트림에 전송하며, 함수 코드에서 로그 및 그 외 출력을 중계합니다.

함수 코드의 로그를 출력하려면 콘솔 클래스에서 메서드를 사용하거나, stdout 또는 stderr에 쓰는 로깅 라이브러리를 사용합니다. 다음 예시는 호출에 대한 요청 ID를 로깅합니다.

public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request) { Console.WriteLine("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

또한 Lambda은(는) Amazon.Lambda.Core 라이브러리에 로거 클래스를 제공합니다. Amazon.Lambda.Core.LambdaLogger 클래스에서 Log 메서드를 사용하여 로그를 작성합니다.

using Amazon.Lambda.Core; public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request) { LambdaLogger.Log("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

이 클래스의 인스턴스는 컨텍스트 객체에서도 사용할 수 있습니다.

public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request, ILambdaContext context) { context.Logger.Log("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

함수 구성 페이지에서 함수를 테스트할 때 Lambda 콘솔에 로그 출력이 표시됩니다. 모든 호출에 대한 로그를 보려면 CloudWatch Logs 콘솔을 사용합니다.

Lambda 함수의 로그를 보려면

  1. CloudWatch 콘솔의 로그 페이지를 엽니다.

  2. 함수(/aws/lambda/function-name)에 대한 로그 그룹을 선택합니다.

  3. 목록에서 첫 번째 스트림을 선택합니다.

각 로그 스트림은 함수의 인스턴스에 해당합니다. 새 스트림은 함수를 업데이트할 때, 그리고 여러 동시 호출을 처리하기 위해 추가 인스턴스가 생성될 때 나타납니다. 특정 호출에 대한 로그를 찾으려면 X-Ray로 함수를 계측하고 추적의 요청 및 로그 스트림에 대한 세부 정보를 기록합니다. 로그 및 추적을 X-Ray와 상호 연관시키는 샘플 애플리케이션의 경우 AWS Lambda용 오류 처리자 샘플 애플리케이션 단원을 참조하십시오.

명령줄에서 호출에 대한 로그를 가져오려면 --log-type 옵션을 사용하십시오. 호출에서 base64로 인코딩된 로그를 최대 4KB까지 포함하는 LogResult 필드가 응답에 포함됩니다.

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

base64 유틸리티를 사용하면 로그를 디코딩할 수 있습니다.

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d 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: 100 ms Memory Size: 128 MB Max Memory Used: 73 MB

base64는 Linux, macOS 및 Ubuntu on Windows에서 사용할 수 있습니다. macOS의 경우, 명령은 base64 -D입니다.

함수를 삭제해도 로그 그룹이 자동으로 삭제되지 않습니다. 로그를 무기한 저장하지 않으려면 로그 그룹을 삭제하거나 로그가 자동으로 삭제되는 보존 기간을 구성하십시오.