Пакетный триггер Lambda на DynamoDB
У меня есть стол, как показано ниже
Key | Value
---------------------------------------------------
Client_123_UNIQUE_ID | s3://abc.txt
Client_123_UNIQUE_ID | s3://xyz.txt
Client_456_UNIQUE_ID | s3://qaz.txt
Client_456_UNIQUE_ID | s3://qwe.txt
Client_789_UNIQUE_ID | s3://asd.txt
Client_789_UNIQUE_ID | s3://zxc.txt
Данные будут последовательно добавляться в эту таблицу из функции AWS Lambda. (может быть, миллионы предметов)
У меня есть сценарий использования, для которого мне нужен триггер, когда в таблице доступно 100 элементов для выполнения некоторой пакетной обработки. Другими словами, как только у нас будет 100 новых элементов, созданных в этой таблице, я хотел бы иметь триггер для функции Lambda для выполнения пакетной обработки 100 элементов.
Когда я исследую, кажется, что DynamoDB Stream может поддерживать Batch, но я не совсем ясно, основываясь на документации.
Лямбда читает записи в пакетном режиме и вызывает вашу функцию для обработки записей из пакета.
Лямбда опрашивает осколки в вашем потоке DynamoDB Streams для записей с базовой скоростью 4 раза в секунду. Когда записи доступны, Lambda вызывает вашу функцию и ждет результата. Если обработка завершается успешно, Lambda возобновляет опрос, пока не получит больше записей.
Если ваша функция возвращает ошибку, Lambda повторяет пакет, пока обработка не будет успешной или данные не истечут. Пока проблема не будет решена, никакие данные в шарде не обрабатываются. Обработайте все ошибки обработки записей в своем коде, чтобы избежать тупиковых фрагментов и потенциальной потери данных.
Не могли бы вы помочь мне уточнить документацию или посоветовать мне подход, который мы используем DynamoDB Stream, правильный для этого варианта использования?
Если я объясняю, что мой вопрос недостаточно хорош, пожалуйста, оставьте комментарии, чтобы я мог уточнить больше.
1 ответ
Вы можете установить BatchSize
при объявлении отображения между потоком и лямбда. Максимальный размер 1000 предметов.