Как обеспечить одноразовую обработку данных в бессерверной архитектуре AWS?

#amazon-web-services #serverless

#amazon-веб-сервисы #Бессерверная

Вопрос:

У меня есть некоторые данные, которые необходимо обработать в определенный момент времени.

Моя текущая стратегия заключается в том, чтобы извлекать данные каждую минуту, загружать их в очередь и обрабатывать.

У меня есть две проблемы с этой стратегией:

  1. Я не могу гарантировать, что в последнюю минуту будут собраны все данные, поэтому я использую последние две минуты; и
  2. Лямбды, насколько я знаю, могут запускаться несколько раз в зависимости от триггера (в данном случае SQS.)

Я пытаюсь избежать записи флага для данных из-за сложной природы пакетной обработки.

Единственное другое решение, которое я могу придумать, — это использовать S3 для создания файла блокировки.

Есть ли лучший способ «запустить» будущие события? Существует ли стратегия вне базы данных и флагов S3?

Ответ №1:

Взгляните на очереди SQS FIFO, они предназначены для доставки один и только один раз.

Теперь вы можете использовать Amazon Simple Queue Service (SQS) для приложений, которым требуется обработка сообщений в строгой последовательности и ровно один раз с использованием очередей первого поступления и первого выхода (FIFO). Очереди FIFO предназначены для обеспечения строгого соблюдения порядка отправки и получения сообщений и того, чтобы каждое сообщение обрабатывалось ровно один раз. …источник

Комментарии:

1. Вау, я и не знал, что в FIFO есть больше деталей. Строгий порядок не требуется, но в нем есть функции дедупликации! Спасибо!