Почему я получаю два события после обновления на Dynamodb? - PullRequest
0 голосов
/ 09 июля 2020

Я настроил поток Dynamodb для запуска моей лямбды. Когда я обновляю элемент в таблице Dynamodb, я вижу, что моя лямбда срабатывает дважды с двумя разными событиями. NewImage и OldImage одинаковы в этих двух событиях. Они различаются только в eventID, ApproximateCreationDateTime, SequenceNumber et c.

И разница только в 1 миллион секунд зависит от метки времени.

Я обновил элемент через консоль Dynamodb, что означает, что должно произойти только одно действие. В противном случае невозможно обновить элемент дважды в течение 1 миллиона секунд через консоль.

Ожидается ли появление двух событий?

1 Ответ

0 голосов
/ 09 июля 2020

Это неожиданное поведение.

Если вы видите 2 отдельных события, это будет означать, что произошло 2 отдельных действия. В другое время это означает, что произошло вторичное действие.

Из AWS Документация верно следующее

DynamoDB Streams помогает обеспечить следующее :

  • Каждая запись потока появляется в потоке ровно один раз.
  • Для каждого элемента, измененного в таблице DynamoDB, записи потока отображаются в той же последовательности, что и фактические изменения в элемент.

Вероятно, это будет связано с вашим приложением, убедитесь, что вы не используете несколько записей там, где, по вашему мнению, может быть одна.

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

...