Невозможно заставить работать лямбда-выражение Minimal API .NET 8 AOT ⇐ C#
-
Гость
Невозможно заставить работать лямбда-выражение Minimal API .NET 8 AOT
Я новичок в AWS, но пробую лямбда-выражения для минимального API-интерфейса для .NET 8. Используя среду выполнения «.NET 8(C#/F#/Powershell)» с архитектурой x86_64. Создал лямбду с помощью инструмента командной строки «dotnet лямбда-пакет» и загрузил ZIP-файл через панель лямбда-панелей.
После загрузки на панели мониторинга отображается зеленая галочка, но лямбда-выражение получает ошибку инициализации при попытке проверить ее с помощью панели управления с помощью базового теста.
Ошибка выглядит следующим образом:
INIT_REPORT Продолжительность инициализации: 20,68 мс Фаза: Статус инициализации: ошибка Тип ошибки: Runtime.ExitError Ошибка: двоичные файлы .NET для функции Lambda неправильно установлены в каталоге /var/task образа при его создании. В каталоге /var/task отсутствует необходимый файл .deps.json. Ошибка: двоичные файлы .NET для функции Lambda неправильно установлены в каталоге /var/task образа при его создании. В каталоге /var/task отсутствует необходимый файл .deps.json. INIT_REPORT Продолжительность инициализации: 21,40 мс Фаза: вызов Статус: ошибка Тип ошибки: Runtime.ExitError START RequestId: Версия: $LATEST RequestId: Ошибка: среда выполнения завершена с ошибкой: статус выхода 105 Это соответствующие файлы, которые я использовал. «BasicRules» — это просто название проекта .NET и лямбда.
Program.cs
с использованием Amazon.Lambda.Serialization.SystemTextJson; использование базовых правил; использование Microsoft.Extensions.Options; var builder = WebApplication.CreateSlimBuilder(args); builder.Services.ConfigureHttpJsonOptions(параметры => { options.SerializerOptions.TypeInfoResolver = CustomSerializationContext.Default; }); builder.Services.AddAWSLambdaHosting(LambdaEventSource.RestApi, options => { options.Serializer = новый SourceGeneratorLambdaJsonSerializer(); }); вар приложение = builder.Build(); app.MapGet("/", () => "Добро пожаловать в запуск скомпилированного AOT минимального API ASP.NET Core на AWS Lambda"); app.MapGet("/_health", () => "Мы здоровы"); app.MapGet("/test", () => "Конечная точка теста"); приложение.Выполнить(); BasicRules.csproj
net8.0 включить включить true Лямбда true истина истина exe истина Закомментированные строки — это просто разные пакеты, которые я пытался добавить ранее из разных примеров, которые нашел.
aws-lambda-tools-defaults.json
{ «размер функции-памяти»: 1024, "configuration": "Выпустить", "время выполнения функции": "dotnet8", "функция-архитектура": "x86_64" } CustomSerializerContext.cs
с использованием System.Text.Json.Serialization; использование Amazon.Lambda.APIGatewayEvents; пространство имен BasicRules; [JsonSerializable(typeof(APIGatewayProxyRequest))] [JsonSerializable(typeof(APIGatewayProxyResponse))] [JsonSerializable(typeof(Dictionary))] общедоступный частичный класс CustomSerializationContext: JsonSerializerContext { }
Я новичок в AWS, но пробую лямбда-выражения для минимального API-интерфейса для .NET 8. Используя среду выполнения «.NET 8(C#/F#/Powershell)» с архитектурой x86_64. Создал лямбду с помощью инструмента командной строки «dotnet лямбда-пакет» и загрузил ZIP-файл через панель лямбда-панелей.
После загрузки на панели мониторинга отображается зеленая галочка, но лямбда-выражение получает ошибку инициализации при попытке проверить ее с помощью панели управления с помощью базового теста.
Ошибка выглядит следующим образом:
INIT_REPORT Продолжительность инициализации: 20,68 мс Фаза: Статус инициализации: ошибка Тип ошибки: Runtime.ExitError Ошибка: двоичные файлы .NET для функции Lambda неправильно установлены в каталоге /var/task образа при его создании. В каталоге /var/task отсутствует необходимый файл .deps.json. Ошибка: двоичные файлы .NET для функции Lambda неправильно установлены в каталоге /var/task образа при его создании. В каталоге /var/task отсутствует необходимый файл .deps.json. INIT_REPORT Продолжительность инициализации: 21,40 мс Фаза: вызов Статус: ошибка Тип ошибки: Runtime.ExitError START RequestId: Версия: $LATEST RequestId: Ошибка: среда выполнения завершена с ошибкой: статус выхода 105 Это соответствующие файлы, которые я использовал. «BasicRules» — это просто название проекта .NET и лямбда.
Program.cs
с использованием Amazon.Lambda.Serialization.SystemTextJson; использование базовых правил; использование Microsoft.Extensions.Options; var builder = WebApplication.CreateSlimBuilder(args); builder.Services.ConfigureHttpJsonOptions(параметры => { options.SerializerOptions.TypeInfoResolver = CustomSerializationContext.Default; }); builder.Services.AddAWSLambdaHosting(LambdaEventSource.RestApi, options => { options.Serializer = новый SourceGeneratorLambdaJsonSerializer(); }); вар приложение = builder.Build(); app.MapGet("/", () => "Добро пожаловать в запуск скомпилированного AOT минимального API ASP.NET Core на AWS Lambda"); app.MapGet("/_health", () => "Мы здоровы"); app.MapGet("/test", () => "Конечная точка теста"); приложение.Выполнить(); BasicRules.csproj
net8.0 включить включить true Лямбда true истина истина exe истина Закомментированные строки — это просто разные пакеты, которые я пытался добавить ранее из разных примеров, которые нашел.
aws-lambda-tools-defaults.json
{ «размер функции-памяти»: 1024, "configuration": "Выпустить", "время выполнения функции": "dotnet8", "функция-архитектура": "x86_64" } CustomSerializerContext.cs
с использованием System.Text.Json.Serialization; использование Amazon.Lambda.APIGatewayEvents; пространство имен BasicRules; [JsonSerializable(typeof(APIGatewayProxyRequest))] [JsonSerializable(typeof(APIGatewayProxyResponse))] [JsonSerializable(typeof(Dictionary))] общедоступный частичный класс CustomSerializationContext: JsonSerializerContext { }
Мобильная версия