SQS и AWS лямбда-интеграция - PullRequest
0 голосов
/ 02 марта 2020

Я разрабатываю Audit Trail System , которая будет служить центральным местом для всех критических событий, происходящих в организации. Я планирую использовать Amazon SQS в качестве временной очереди для хранения сообщений, что, в свою очередь, вызовет лямбда-функцию AWS для записи сообщений в AWS S3 store . Я хочу разделить данные на уровне tenantId (некоторый идентифицируемый идентификатор) и сохранить сообщения в виде пакетов в S3, что уменьшит количество вызовов от лямбды до S3 . Более того, я хочу запускать лямбду каждый час. Но у меня есть 2 проблемы: один максимальный размер пакета, предоставляемый SQS, равен 10, а также лямбда-триггер опрашивает сервис SQS на регулярной основе, что увеличивает количество вызовов к моему S3. Я хочу создать пакет из 1000 сообщений (скажем) вручную перед вызовом API пакета S3. Я не очень уверен, как создать архитектуру моей системы, чтобы вышеуказанные требования были выполнены. Помощь или идея очень важны!

Упрощенная архитектура:

enter image description here

Спасибо!

1 Ответ

3 голосов
/ 02 марта 2020

Я бы порекомендовал вам вместо этого использовать Amazon Kinesis Data Firehose . Он в основном делает то, что вы хотите сделать:

  • Принимает входящие сообщения
  • Буферизует их на период времени
  • Записывает вывод в S3 или Elasticsearch

Все это делается как управляемая служба и может также интегрироваться с AWS Lambda для обеспечения настраиваемой обработки (например, отфильтровывать определенные записи).

Однако вам, возможно, придется сделать что-то особенное для разделения данных на tenantId. См .: Можно ли настроить разделение в Kinesis Firehose перед доставкой на S3?

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