Как остановить / контролировать события, вызванные AWS S3 при загрузке объекта для вызова AWS Lambda? - PullRequest
0 голосов
/ 12 января 2019

В настоящее время я загружаю файл в AWS S3 Bucket (B1) с размером 250 МБ и 1 миллионом записей. Это запускает лямбду (L1 - 1,5 ГБ, 3 минуты), которая читает этот файл и группирует записи с некоторыми критериями и снова записывает около 25K файлов в S3 в другом сегменте (B2).

Теперь событие уведомления, настроенное в Bucket (B2), генерирует 25K событий (запросов) к разным лямбдам (L2 - 512 МБ, 2Mins, Concurrency-2). Этот лямбда-вызов вызывает основанный на Java микросервис, который после обработки делает запись в БД, которая занимает около 1-2 секунд для каждого вызова.

Проблема здесь в том, что, как только сработает 2-я лямбда (L2), остановить ее невозможно. Он работает в течение нескольких часов и не получает никаких других событий для той же лямбды, пока не обработает все события полностью, и я уже не могу контролировать события S3, запущенные.

Может ли кто-нибудь объяснить, как события, инициируемые на S3, при обработке загрузки файлов (архитектура) на Amazon S3 и как получить детальный контроль над событиями S3, запускаемыми?

Могу ли я что-нибудь сделать на стороне AWS Lambda, чтобы остановить уже запущенные события S3?

1 Ответ

0 голосов
/ 12 января 2019

Я не думаю, что установка события уведомления на B2 - лучший вариант, когда вы пишете 25K объектов одновременно. Я думаю, что процесс может быть упрощен.

  • Lambda L1, который записывает 25K объектов в B2, может создать массив записываемых ключей объектов и поместить его в B2. Убедитесь, что он записан в отдельной папке, и в этой папке установлено событие уведомления, а не в том месте, где записываются файлы размером 25 КБ.

  • L2 сработает, когда вы напишите файл, содержащий ключи 25K объектов, которые он может передать вашему microservice.

Еще один вариант использования SNS

  • Lambda L1, который записывает 25K объектов в B2, может создать массив записываемых ключей объектов и опубликовать его в теме SNS. Размер сообщения SNS составляет 256 КБ, что достаточно для вашего варианта использования

  • Вы mircoservice можете подписаться на тему SNS, чтобы получать ключи объектов и делать записи в БД

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