Пример #1
0
        /// <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,
                };
            }