Использование лямбда-потока и адаптера Kinesis для Dynamodb - PullRequest
0 голосов
/ 01 мая 2019

Я работаю над дизайном, в котором нам нужно уведомлять клиента в реальном времени о транзакциях. Я думаю об использовании DynamoDB Stream + Lambda, но для отправки электронного письма мне нужно использовать специфический для команды сервис Java, поэтому есть ли вики-справка для - Как Lambda может вызывать сервис Java? Другой альтернативой является DynamoDB Streams Kinesis Adapter , но я запутался, нужно ли запускать конечную точку приложения каждый раз, когда мы хотим читать из Stream (опрос), или есть ли какой-либо управляемый событиями (push-основанный) механизм, также доступный для запуска выполнения метода в приложении Java при обновлении DynamoDB?

1 Ответ

0 голосов
/ 02 мая 2019

Когда вы отображаете лямбда-функцию в поток таблицы DynamodB, для каждого элемента, который вставляется, обновляется или удаляется, aws автоматически вызывает вашу лямбда-функцию.

При каждом лямбда-вызове aws включает в себя элемент, а также предыдущее значение в случае обновления, поэтому вам не нужно читать элемент самостоятельно.

Описанный вами случай идеально подходит для потоков DynamoDB.

Следует помнить одну вещь: если ваша отображенная лямбда не работает, aws будет повторять попытку для того же элемента до тех пор, пока не пройдет успех или 24 часа, это может привести к задержкевсе остальные элементы, которые будут обработаны для этой таблицы.Удостоверьтесь, что ваша лямбда всегда возвращает успех, и расположите ваш код таким образом, чтобы его выполнение несколько раз не создавало проблем.Например.Если ваша лямбда не работает после отправки электронной почты, aws повторит ее, отправит письмо снова и потерпит неудачу снова и снова.Aws увеличит интервал повторных попыток, но вы не хотите повторять задачи.

...