2015-12-29 4 views
2

У меня есть большой файл, загружаемый на S3, и для каждой строки в файле мне нужно сделать вызов API продолжительного отдыха. Я пытаюсь найти лучший способ разбить работу. Моя текущая идея потокаЛучший способ распараллеливать AWS Lambda

Lambda (разбить файл построчно) -> SNS (уведомление в строке) -> Lambda (отдельно в каждой строке/уведомление)

Это кажется, что это общий случай использования, но Я не могу найти много ссылок на него, я чего-то не хватает? Есть ли лучший способ разбить мою работу и сделать ее в разумные сроки?

+2

Почему бы не пропустить средний шаг и просто вызвать вторую лямбда-функцию от первой? Вид вроде этого: http://stackoverflow.com/questions/31714788/can-an-aws-lambda-function-call-another – JohnAllen

+0

Как долго длится ваш «API-интерфейс длительного обслуживания»? – helloV

ответ

1

Лучший Путь будет субъективным. Метод, который вы используете в настоящее время, Lambda->SNS->Lambda, является одним из возможных методов. Как отметил ДжонАллен, вы можете просто сделать Lambda->Lambda.

Ваш сценарий напоминает мне this project, в котором есть одна функция лямбда, добавляющая элементы в поток Kinesis, который затем запускает много параллельных функций лямбда.

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