AWS Lambda 컨텍스트 객체(C#) - AWS Lambda

AWS Lambda 컨텍스트 객체(C#)

Lambda는 함수를 실행할 때 컨텍스트 객체를 핸들러에 전달합니다. 이 객체는 호출, 함수 및 실행 환경에 관한 정보를 속성에 제공합니다.

컨텍스트 속성
  • FunctionName – Lambda 함수의 이름입니다.

  • FunctionVersion – 함수의 버전입니다.

  • InvokedFunctionArn – 함수를 호출할 때 사용하는 Amazon 리소스 이름(ARN)입니다. 호출자가 버전 번호 또는 별칭을 지정했는지 여부를 나타냅니다.

  • MemoryLimitInMB – 함수에 할당된 메모리의 양입니다.

  • AwsRequestId – 호출 요청의 식별자입니다.

  • LogGroupName – 함수에 대한 로그 그룹입니다.

  • LogStreamName – 함수 인스턴스에 대한 로그 스트림입니다.

  • RemainingTime (TimeSpan) – 실행 시간이 초과되기 전에 남은 시간(밀리초)입니다.

  • Identity – (모바일 앱) 요청을 승인한 Amazon Cognito 자격 증명에 대한 정보입니다.

  • ClientContext – (모바일 앱) 클라이언트 애플리케이션이 Lambda에게 제공한 클라이언트 컨텍스트입니다.

  • Logger 함수에 대한 로거 객체입니다.

ILambdaContext 객체의 정보를 사용하여 모니터링 목적으로 함수의 간접 호출에 대한 정보를 출력할 수 있습니다. 다음 코드는 구조화된 로깅 프레임워크에 컨텍스트 정보를 추가하는 방법의 예입니다. 이 예제에서는 함수가 AwsRequestId을(를) 로그 출력에 추가합니다. 또한 함수는 Lambda 함수 제한 시간에 도달하려는 경우 RemainingTime 속성을 사용하여 진행 중인 작업도 취소합니다.

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace GetProductHandler; public class Function { private readonly IDatabaseRepository _repo; public Function() { this._repo = new DatabaseRepository(); } public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) { Logger.AppendKey("AwsRequestId", context.AwsRequestId); var id = request.PathParameters["id"]; using var cts = new CancellationTokenSource(); try { cts.CancelAfter(context.RemainingTime.Add(TimeSpan.FromSeconds(-1))); var databaseRecord = await this._repo.GetById(id, cts.Token); return new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = JsonSerializer.Serialize(databaseRecord) }; } finally { cts.Cancel(); return new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.InternalServerError, Body = JsonSerializer.Serialize(databaseRecord) }; } } }