Сообщение SNS запускает вызов функции Lambda несколько раз (нет ошибок / тайм-аутов при обработке) - PullRequest
0 голосов
/ 27 сентября 2018

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

Обновление параллелизма до «Резервного параллелизма» => 1, https://jmp.sh/LqpWOPI предотвращает это, но это повлияет на масштабируемость этой асинхронной лямбда-функции.

Есть мысли о том, почему это может происходить и как с этим справляться, чтобы избежать дублирования обработки?

1 Ответ

0 голосов
/ 29 сентября 2018

В соответствии с документацией Lambda - Invoke AWS асинхронно запускаемые функции Lambda гарантированно будут вызываться хотя бы один раз .

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

Это похоже на SQS хотя бы один раздоставка сообщений, поскольку вы гарантированно получите его один раз, но также можете получить его несколько раз.

Если вы не хотите уменьшать лимит параллелизма до 1, вам придетсясделайте вашу лямбда-функцию идемпотентной, чтобы она могла корректно обрабатывать несколько вызовов.

...