C# AWS Lambda Asyn c Конечная точка API - ожидание никогда не возвращается - PullRequest
0 голосов
/ 20 марта 2020

Учитывая следующий (сжатый) код MVC Web API Controller (. NET core 2.1), опубликованный в виде стека Lambda без сервера, который вызывается из API Gateway через прокси, проект, созданный из стандартного AWS SDK-приложения без сервера template:

        [Route("Upsert")]
        [HttpPost]
        public async Task<...return type> Post([FromBody] <...object type> request)
        {
            var res = <...return type>;
            try
            {
                LambdaLogger.Log("upsert getting Slot Version");
                // get Slot values
                var client = new AmazonLexModelBuildingServiceClient(<...region endpoint>);
                LambdaLogger.Log($"client version: {client.Config.ServiceVersion}");
                LambdaLogger.Log("Awaiting GetSlotTypeAsync");

                var getSlotTypeResult = await client.GetSlotTypeAsync(
                    new GetSlotTypeRequest
                    {
                        Name = "<name>",
                        Version = "$LATEST"
                    }
                );
                res.Message = $"Slot version {getSlotTypeResult.Version}";

                LambdaLogger.Log($"upsert returning {res.Message}");
            }

            catch (Exception ex)
            {
                LambdaLogger.Log($"exception: {ex.Message}\r\nRequest: {request}");
                throw;
            }
            return res;
        }
    }

Ожидание никогда не завершается и время ожидания шлюза API (504). Все остальные конечные точки в проекте работают должным образом (хотя ни одна из них не является асин c). Это работает, как и ожидалось, локально (в LocalEntryPoint).

Журналы Cloudwatch (соответствующая часть):

16:53:19    START RequestId: f2b92729-3757-4878-802a-bd1209f292d5 Version: 72
16:53:19    [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting POST 16:53:19
...
16:53:19    [Information] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Executing action method ...Post (<...API name>) - Validation state: Valid
16:53:19    upsert getting Slot Version
16:53:20    client version: 2017-04-19
16:53:20    Awaiting GetSlotTypeAsync
16:53:49    END RequestId: f2b92729-3757-4878-802a-bd1209f292d5 <-- e.g. timeout

Я уверен, что упускаю что-то простое и очевидное, но я начинаю 2-й день расследования ...

Большое спасибо за любую информацию, которую может предоставить сообщество.

...