Дубликаты потока DynamoDB и стратегии агрегации - PullRequest
0 голосов
/ 02 мая 2020

У меня есть лямбда, у которой есть отображение события на выполнение в пошаговой функции, когда запускается и останавливается пошаговая функция. Я обнаружил, однако, что эта лямбда может вызываться несколько раз для одного и того же события, которое после исследования обнаружило, что это ожидаемое поведение, что лямбда может быть вызвана несколько раз. Я использовал это, чтобы рассчитать для данного клиента, как выполняются пошаговые функции man в данный момент времени, используя DynamoDB, с ADD обновлениями.

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

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

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

...