Как вы выполняете функции параллельно? - PullRequest
0 голосов
/ 04 февраля 2019

Мое желание - извлечь x количество записей из базы данных на основе некоторого пользовательского оператора select , на выходе будет массив данных json.Затем я хочу передать каждый элемент в массиве в другую лямбда-функцию параллельно.

Так что, если возвращается 1000 записей, 1000 лямбда-функций должны выполняться параллельно (я увеличиваю предел учетной записи до того, что мне нужно),Если 30 из 1000 терпят неудачу, основная задача, которая получала записи, должна знать об этом.

Я изо всех сил пытаюсь собрать этот простой поток.

В настоящее время я использую javascript и AWSAurora.Я не ищу код node.js / javascript, который извлекает данные, а только конфигурацию пошаговых функций AWS и способ построения массива внутри каждой функции.

Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2019

если возвращается 1000 записей, необходимо параллельно выполнять 1000 лямбда-функций

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

Возможно, вам следует рассмотреть возможность использования лямбда-триггера SQS .Количество записей, извлеченных из БД, можно добавить в очередь SQS, которая затем будет запускать лямбда-функцию для каждого полученного элемента.

В случае сбоя 30 из 1000 основная задача, которая получала записи, должназнать об этом.

Существуют различные способы достичь этого.SQS не удалит элемент из очереди, если Lambda вернет ошибку.Вы можете настроить DLQ и RedrivePolicy в соответствии с вашими требованиями.Или вы можете предложить собственное решение, позволяющее рассчитывать на то, что Lambdas не сможет вызвать службу, которая извлекает записи из БД.

...