Возможно ли, чтобы AWS Lambda имела более одного триггера?

#c# #amazon-web-services #.net-core #aws-lambda

#c# #amazon-веб-сервисы #.net-core #aws-lambda

Вопрос:

Я создал a .Сетевое приложение с шаблоном бессерверного приложения AWS. Когда я его развертываю, у меня есть лямбда-код с триггером API Gateway (давайте вызовем is A).

Когда A получает запрос GET / POST, он делегирует работу рабочему лямбде (назовем его B). Когда B завершает работу, он публикует сообщение в теме SNS.

Лямбда A должен подписаться на раздел SNS, чтобы он знал, завершена ли работа или нет.

Я могу добавить триггер SNS к lambda A (в дополнение к триггеру API Gateway). Но я не знаю, как использовать триггер в .Сетевое приложение. Было бы здорово, если бы кто-нибудь пролил свет на то, как реализовать обработчик функции, когда API Gateway и триггеры SNS добавляются к одному и тому же lambda.

Комментарии:

1. Почему вы хотите, чтобы функция запускалась как из API Gateway, так и из SNS? Вы хотите, чтобы функция A дождалась результата функции B, прежде чем возвращать результат в API Gateway?

2. @JohnRotenstein, да, вы правы. Функция A ожидает результата функции B, прежде чем вернуть результат API Gateway.

Ответ №1:

Похоже, что ваш поток:

 User --> API Gateway --> Lambda A --> Lambda B
 

Если вы хотите, чтобы лямбда-функция A получала результат от лямбда-функции B, она должна просто выполнить синхронный Invoke() вызов API для лямбда-функции B. Любое значение, возвращаемое функцией B, затем будет возвращено функции A. Нет необходимости использовать Amazon SNS в ответе.

Стоит упомянуть, что вы будете платить за обе функции, поскольку функция A будет «запущена», пока она ожидает функции B. Поэтому вы можете захотеть объединить обе операции в одну функцию, чтобы избежать двойной оплаты за время.

Не существует концепции повторного запуска исходной функции A — как только она завершает выполнение, контекст функции теряется. Ваш план использования SNS для вызова функции A будет просто запускать другое выполнение функции A, а не «обратный вызов» исходной функции.

Ответ №2:

Я вижу, что могу обновить CFT, чтобы добавить более одного типа триггера. Но в коде C # метод FunctionHandler не является универсальным и специфичен для одного типа триггера. Поэтому я не вижу способа обрабатывать более одного типа триггера в C #.