0

У меня есть лямбда-функция на основе python, которая запускает операции s3 put, основанные на потоке firehose кинези, который отправляет данные со скоростью около 10 тыс. Записей в минуту. В настоящее время функция лямбда просто выполняет некоторые небольшие исправления данных и доставляет ее в экземпляр логсташа в партиях по 100. Время выполнения лямбды составляет 5-12 секунд, что отлично, поскольку оно выполняется каждую минуту.Быстрый доступ к данным для функции AWS Lambda

Мы изучаем возможность обогащения потоковых данных дополнительной информацией перед отправкой ее в logstash. Каждое входящее сообщение имеет поле «id», и мы хотели бы найти этот идентификатор для некоторого рода db, захватить дополнительную информацию из db и вставить ее в объект, прежде чем передавать его.

Проблема в том, что я не могу сделать это достаточно быстро. Я попытался загрузить все данные (600 тыс. Записей) в DynamoDB и выполнить поиск по каждому циклу записи в лямбда-функции. Это слишком сильно замедляет выполнение. Затем я решил, что нам не нужно дважды искать один и тот же идентификатор, поэтому я использую список obj для хранения уже «искавших» данных - это немного сократило время выполнения, но все еще не близко к тому, d нравится.

Затем я подумал о предварительной загрузке всего набора данных БД. Я протестировал это - просто сбросил все 600 записей из dynamodb в объект «список кеша», прежде чем начинать цикл через каждую запись из объекта s3. Сброс данных примерно за одну минуту, но список кешей теперь настолько велик, что каждый поиск по нему занимает 5 секунд (путь медленнее, чем попадание в db).

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

ответ

1

Предварительно загрузите данные на сервер Redis. Это и есть тот, на что хорошо справляется Редис.

+0

Yup, что попало в точку. Переместил нашу лямбда-функцию внутрь vpc и развернул кеш микро-redis. Он перевернулся через записи 8k и с поиском против 670k записей в redis примерно через 12 секунд. Спасибо, что указали мне в правильном направлении! – Trondh

+0

Рад, что я мог помочь. –