Работает ли Amazon.Lambda.AspNetCoreServer с интеграцией Application Load Balancer, о которой только что было объявлено во время reInvent? Я замечаю какое-то странное поведение, когда пытаюсь это сделать, не уверен, что я делаю что-то не так или это известная проблема.
Я просто смотрел на новую интеграцию ALB. Запрос JSON, отправляемый в функцию Lambda, отличается от шлюза API. Не должно быть слишком сложно обнаружить в APIGatewayProxyFunction формат JSON и выполнить другую логику синтаксического анализа на основе источника.
Это было бы прекрасно. Мы, вероятно, будем использовать ALB в качестве предпочтительного метода интеграции, поскольку мы уже активно используем ALB.
В настоящее время мы используем APIGatewayProxyFunction, но шлюз API позволяет завершить транзакцию только через 30 секунд. ELB был бы хорошим решением для наших больших данных, которые нуждаются в обработке. (до предела лямбда-функций 15мин)
Было бы замечательно, если бы мы могли просто использовать LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction и не заботиться о том, APIGateway это или ELB.
Я работаю над поддержкой ALB в ветке поддержки alb . Следующий шаг в этой ветке — работа над Amazon.Lambda.AspNetCoreServer
Вау, это было быстро! =) Спасибо!
Не могу дождаться!
Это здорово, спасибо. Мы с нетерпением ждем возможности использовать это для нашего основного веб-приложения dotnet. Спасибо!
Согласен, не могу дождаться этой функции!
Обновление статуса Я отправил ветку alb-support-aspnetcore , которая содержит обновления для Amazon.Lambda.AspNetCoreServer
.
Изменения привели к более серьезному рефакторингу, чем я планировал. Когда я изначально писал эту библиотеку, я определенно не ожидал, что для функций Lambda будет несколько HTTP-интерфейсов.
Если кто-то захочет клонировать репо и попробовать, пока я заканчиваю проверку, это было бы здорово. Вам просто нужно клонировать репо, зайти в Amazon.Lambda.ApplicationLoadBalancerEvents
и Amazon.Lambda.AspNetCoreServer
и сделать dotnet pack
. Затем добавьте созданный пакет NuGet в локальный веб-канал.
Для большинства приложений единственное изменение, которое вы должны сделать в LambdaEntryPoint
или как вы его назвали, это изменить базовый класс с APIGatewayProxyFunction
на ApplicationLoadBalancerFunction
.
Забавно то, что я повторно развернулся на имя LAMBDA, используя master, и я смог использовать ELB с LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction до вашей ветки, и все заработало. (Просто нужно установить правила для триггера ELB, чтобы использовать путь «api/*»)
(Каким-то образом настройка триггера ELB для новой лямбда-функции работает без ваших ветвей, возможно, потому, что заголовки/ответы близки друг к другу.)
Если у меня будет время, я проверю вашу ветку позже сегодня.
Между шлюзом API и событием ALB существует значительное сходство, которое может позволить вам повезти. Если вы включили заголовки с несколькими значениями или получили двоичные данные из тела запроса, это приведет к сбою.
Филиал выглядит хорошо.
Это выглядит потрясающе! Мне не терпится увидеть, как эта функция работает в действии. Есть ли у нас какое-либо предполагаемое время прибытия, когда это можно будет объединить и упаковать?
Очень жду увидеть это в официальном пакете.
Я думаю, что это лучшее бессерверное предложение, которое у вас есть. Мы бы перенесли на него большинство наших API и даже веб-сайтов, если бы не два основных недостатка: Шлюз API и (лямбда) задержки холодного запуска. Это исправляет одну из них, а проверки работоспособности ALB должны помочь сохранить лямбда-выражения живыми :-)
@normj , просто любопытно, есть ли ETA, когда мы можем ожидать, что это будет доступно в Nuget?
Я с нетерпением жду, когда эта функция будет включена и в Nuget.
Я проверил это на своем уже существующем приложении, и, похоже, оно работает без проблем.
Сегодня была выпущена версия 3.0.0 Amazon.Lambda.AspNetCoreServer с поддержкой ALB. Ознакомьтесь с записью в блоге для получения дополнительной информации. https://aws.amazon.com/blogs/developer/updates-for-serverless-asp-net-core/
@normj Отличный пост и отличная работа! Спасибо за все, что вы делаете для интеграции .NET в экосистему AWS.
@ryanpagel Добро пожаловать 😄
Закрытие по мере выпуска функции.
Самый полезный комментарий
Я работаю над поддержкой ALB в ветке поддержки alb . Следующий шаг в этой ветке — работа над
Amazon.Lambda.AspNetCoreServer