AWS Lambda - создание бессерверного API с использованием .NET Core

Недавно я изучал AWS Lambdas и способы создания бессерверного API с использованием .Net Core. Насколько я понимаю, вы можете сделать это двумя разными способами.

1) Напишите несколько отдельных лямбда-выражений на C# и разверните их в AWS. Запросы поступают через шлюз API, и каждая лямбда действует как конечная точка.

2) Создайте бессерверный веб-API с использованием ядра .Net. Когда вы создаете бессерверный проект веб-API, автоматически создается лямбда, которая становится точкой входа в веб-API.

Существуют ли какие-либо ограничения 1 на 2 или варианты использования, в которых один подход может быть лучше другого? Или это всего лишь два разных способа достижения одного и того же?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
526
1

Ответы 1

Я не думаю, что твои варианты верны. Есть два варианта создания API с поддержкой Lambda:

1- Создайте лямбда-выражения и разверните их независимо в AWS в одном или нескольких проектах. Затем вручную создайте конечные точки шлюза API, которые указывают на одну или несколько лямбда-выражений.

2- Используйте бессерверный проект, чтобы объединить ваши лямбды в один проект. Определите свои конечные точки в этом проекте и попросите Cloudformation создать конечные точки API Gateway и подключить их к вашим лямбдам при развертывании.

Что касается плюсов и минусов,

Опция 1:

Плюсы: обладает гибкостью независимого развертывания лямбда-выражений, также вы можете настроить конечные точки шлюза API любым удобным для вас способом, без необходимости понимать синтаксис определения Cloudformation, который, по моему опыту, потребовал некоторого времени нарастания.

Минусы: Если у вас много лямбда-выражений, это становится кошмаром для менеджмента. Также ваше определение конечной точки отсутствует в исходном коде, и изменения в конфигурации конечной точки не будут отслеживаться.

Вариант 2:

Плюсы: Если вы разбираетесь в Cloudformation или хотите использовать конфигурацию по умолчанию, развернуть лямбда-выражение и подключить ее к конечной точке шлюза API очень просто. AWS создаст для вас конечную точку и создаст этапы разработки и производства, политики, роли IAM и т. д. Это развертывание Cloudformation непосредственно из Visual Studio приводит к тому, что все развертывание и все связанные объекты попадают в один и тот же «стек» в AWS Cloudformation. которые можно очень легко изменить, переназначить или удалить. Кроме того, ваша инфраструктура теперь представляет собой код, и изменения в нем можно проверить в вашем репозитории git.

Минусы: На мой взгляд, самый большой недостаток заключается в том, что стек не охватывает решение VS, а только проект, поэтому все ваши лямбда-выражения должны жить в одном проекте, что означает, что если у вас их много, они все закончатся. в одном монолитном бинарном лямбда-выражении. Сгенерированный большой двоичный файл проекта будет стоить вам времени выполнения памяти на AWS и проблем с эффективностью. Другой недостаток заключается в том, что если вы хотите иметь конкретный или нестандартный API-шлюз, вам необходимо понимать синтаксис Cloudformation, чтобы изменить файл serverless.template.

Заключение: Я предпочел разделить настоящее приложение на более мелкие части связанных лямбда-выражений на основе объекта API и поместить эти лямбда-выражения в несколько проектов бессерверных приложений. Например, у меня есть проект заказа, который содержит все лямбды, связанные с API заказа, и проект продукта, содержащий лямбды, связанные с API продукта и т. д. Оба они будут жить в одном решении и будут развертываться отдельно. В настоящее время я работаю над тем, чтобы развернуть все решение сразу.

Другие вопросы по теме