Идентифицируйте новые объекты в Amazon S3 через регулярные промежутки времени - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть журналы, которые добавляются в корзину s3 из разных источников. Я хочу иметь возможность читать эти журналы на основе интервала, например, каждые 5 минут. Однако я не хочу снова сканировать все объекты, мне просто нужно добавить все новые объекты с момента последнего запуска моего процесса. (В данном случае 5 минут назад)

На данный момент я решил это с помощью события s3. Когда в s3 добавляется новый файл, он запускает лямбду и сохраняет имя объекта в DynamodB. Затем задание cron читает все содержимое этой таблицы в DynamodB, обрабатывает его и сразу удаляет.

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

1 Ответ

2 голосов
/ 07 ноября 2019

Вместо использования DynamoDB вы можете:

  • Настроить событие Amazon S3 на создать сообщение в очереди Amazon SQS при получении нового файла
  • Ваш работник (предположительно в экземпляре Amazon EC2) может опросить очередь SQS на наличие сообщений (если он ожидает сообщения, он может использовать длинный опрос для запроса очереди, чтобы он тоже не спрашивал)часто)
  • При получении сообщения рабочий может обработать файл , а затем удалить сообщение из очереди SQS

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

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