#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 #.