DynamoDB streams - записывает данные обратно в таблицу - PullRequest
0 голосов
/ 30 декабря 2018

Рассмотрим следующую архитектуру:

write -> DynamoDB table -> stream -> Lambda -> write metadata item to same table 

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


Но не при записи элемента метаданных добавить новый элемент в поток и запустить Lambda снова?

Какизбежать бесконечного цикла?Есть ли способ избежать появления записи метаданных в потоке?

Или тратить 2 потоковых и лямбда-запроса с этой архитектурой неизбежно?(мы платим за запрос) Т.е. рано выходить из лямбда-функции, если это элемент метаданных.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

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

Dynamo DB same table metadata insertion reference

0 голосов
/ 30 декабря 2018

Поскольку запуск лямбда-функции AWS из потока DynamoDB представляет собой двоичную опцию (вкл / выкл), невозможно активировать лямбда-функцию AWS только для определенных операций записи в таблицу.Таким образом, ваша лямбда-функция AWS будет снова вызываться для элементов, которые она только что записала в таблицу DynamoDB.Важным моментом является наличие логики в вашей лямбда-функции AWS, чтобы обнаружить, что она записала эти данные, и не записывать данные в этом случае снова.В противном случае вы получили бы упомянутый бесконечный цикл, что было бы очень печально, особенно если бы оно осталось незамеченным.

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