Периодическое чтение из AWS S3 и публикация в SQS - PullRequest
2 голосов
/ 28 сентября 2019

У меня S3 bucket с разными файлами.Мне нужно прочитать эти файлы и опубликовать SQS msg для каждой строки в файле.Я не могу использовать события S3, так как файлы должны обрабатываться с задержкой - отправлять в SQS через месяц.

Я могу написать планировщик, чтобы выполнить эту задачу, прочитать и опубликовать.Но могу ли я быть AWS для этой цели?AWS Batch или AWS data pipe или Lambda .?

Мне нужно передать дату (имя файла) данных, которые будут прочитаны и опубликованы.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

По сути, вам нужно сделать две вещи:

Перечислить все объекты в корзине в S3 и выполнить некоторые действия с любым объектом, загруженным более месяца назад.

Можете ли вы использовать Lambda или Batch для этого?Конечно.Лямбда может быть настроена на запуск один раз в день, перечислять файлы и публиковать результаты в SQS.

Если вы?Понятия не имею.Многое зависит от вашего масштаба и того, что вы планируете делать, если выполнение этой работы занимает много времени.Если в вашем S3-ковше сотни объектов, это не будет проблемой.Если у него есть миллиарды, ваша лямбда должна будет иметь возможность обрабатывать прерывания и продолжать листать файлы из предыдущего запуска.

В качестве альтернативы, вы можете использовать события S3 для запуска простой лямбды, которая добавляет строку кбаза данных.Затем, опять-таки, некоторые лямбды могут запускаться в задании cron, которое запрашивает у базы данных старые строки и публикует значение SQS для использования другими.Может быть, это немного чище и может справиться с масштабированием до довольно больших размеров сегментов.

Или вы можете выполнять разбиение по файлам, решать, что делать, и обрабатывать старые файлы на t2.micro, если выпросто нужно ежедневно выполнять несколько простых операций с несколькими десятками файлов.

Все зависит от вашей рабочей нагрузки и потребностей.

0 голосов
/ 29 сентября 2019

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

Вы можете использовать события S3 для запуска функции шага , которая ожидает в течение месяца перед чтением файла S3 и отправкой сообщений через SQS .

Немного потрудившись, вы могли бы использовать события S3 для запуска лямбда-функции , которая записывает сообщения в DynamoDB с TTL одного месяца в будущем.Когда истекает TTL, у вас может быть другая лямбда, которая слушает потоки DynamoDB, а когда происходит событие удаления, оно публикует сообщение в SQS.(Хорошее введение в эту общую стратегию можно найти здесь .)

Хотя вторая стратегия может потребовать больше усилий, вы можете найти ее менее дорогой, чем использование пошаговых функций в зависимости от общего сообщения.пропускная способность и независимо от того, происходят ли загрузки S3 пакетами или при плавном распределении.

...