/// <inheritdoc /> public override async Task <CustomResourceResponse <TLambdaOutput> > InvokeLambda( Stream inputStream, CancellationToken cancellationToken = default ) { cancellationToken.ThrowIfCancellationRequested(); CustomResourceResponse <TLambdaOutput> response; var input = await DeserializeInput(inputStream, cancellationToken); try { var request = GetFullRequest(input); Validate(request); var requestType = GetRequestType(request); var data = await(requestType switch { CustomResourceRequestType.Create => Lambda.Create(request, cancellationToken), CustomResourceRequestType.Update => Lambda.Update(request, cancellationToken), CustomResourceRequestType.Delete => Lambda.Delete(request, cancellationToken), _ => throw new Exception($"Unknown RequestType '{request.RequestType}'"), }); response = new CustomResourceResponse <TLambdaOutput> { Status = CustomResourceResponseStatus.Success, RequestId = request.RequestId, StackId = request.StackId, LogicalResourceId = request.LogicalResourceId, PhysicalResourceId = data.Id, Data = data, }; }