Множественный запрос интеграции AWS API Gateway для каждого метода

В моем ресурсе /api есть метод POST, который проксирует тело в Kinesis Firehose (а затем в ES). В то же время я хочу, чтобы он запускал функцию Lambda.

Я попытался добавить дополнительный метод ЛЮБОЙ для запуска функции Lambda, но шлюз API, похоже, предпочитает обработчик POST.

Я знаю, что могу запустить Lambda при POST и отправить функцию Lambda в Firehose, но я бы предпочел, чтобы эти два параметра были независимы друг от друга.


person Glaslos    schedule 24.08.2017    source источник
comment
Просто интересно, почему вы не хотите иметь лямбду (не обязательно ту, которую вы собираетесь вызывать) в качестве среднего уровня. Например, запрос на интеграцию вызывает Lambda X, которая состоит из нескольких строк. Lambda X вызывает вашу исходную Lambda и запускает кинезис? Кроме того, вам нужно собирать/ждать ответы/статусы от обоих из них, или вы просто заботитесь о том, чтобы их активировать?   -  person Nicholas    schedule 24.08.2017
comment
У меня нет оригинальной Lambda, API Gateway отправляет напрямую в Kinesis.   -  person Glaslos    schedule 25.08.2017
comment
вы рассматривали ступенчатые функции? docs.aws.amazon.com/step- функции/последние/dg/   -  person Nicholas    schedule 25.08.2017


Ответы (1)


Шлюз API не разветвляет запрос на несколько одновременных действий. Метод ANY означает «любой метод без определенного метода». Поскольку вы также определили POST, любой POST не увидит файл ANY.

Чтобы сделать то, что вы, кажется, пытаетесь сделать — выполнить лямбда-функцию и сделать вызов Kinesis API, вам нужно написать исходную лямбда-функцию, которая служит оболочкой и выполняет оба действия — отправьте запрос в Kinesis и отправьте запрос в Lambda (для вызова другой функции Lambda) — асинхронно, если это позволяет бизнес-логика, — а затем упорядочите результаты в единый согласованный ответ, соответствующий вашим потребностям.

Эта первая функция Lambda не обязательно должна быть на том же языке, что и вторая, поэтому, например, если существующая функция Lambda написана на Java, функция-оболочка может быть написана на Node без каких-либо негативных последствий для производительности, поскольку она выполняется независимо от другая сторона Lambda API.

person Michael - sqlbot    schedule 24.08.2017
comment
Спасибо, что подтвердили мое наблюдение. Основная причина, по которой я хотел избежать дополнительной лямбды, заключалась в аккуратной интеграции Kinesis в API Gateway. Кроме того, два действия (Kinesis и Lambda), которые я собираюсь выполнить, полностью независимы, и ни от одного из них не ожидается ответа. Я приму ваш ответ через пару часов. - person Glaslos; 25.08.2017