непрерывно загружать журналы из S3 в DynamoDB

логи наших приложений перекачиваются на S3 через Kinesis Firehose. мы хотим, чтобы эти данные также поступали в DynamoDB, чтобы мы могли эффективно запрашивать данные, которые будут представлены в веб-интерфейсе (приложение Ember). необходимость в этом заключается в том, чтобы пользователи могли фильтровать и сортировать данные и так далее. в основном для поддержки запросов через веб-интерфейс.

я заглянул в конвейер данных AWS. это надежно, но больше приспособлено к одноразовому или запланированному импорту. мы хотим, чтобы поток данных из s3 в DynamoDB был непрерывным.

какие еще варианты доступны для достижения этой цели? перемещение данных из S3 в DynamoDB не является уникальным требованием. так как вы решили эту проблему?

Является ли лямбда, запускаемая событием S3, опцией? если да, то как сделать эту лямбда отказоустойчивую?


person shamanth Gowdra Shankaramurthy    schedule 08.12.2017    source источник
comment
Вы пробовали AWS Athena? Он позволяет выполнять SQL-подобные запросы к данным S3.   -  person Noel Llevares    schedule 09.12.2017
comment
@dashmug да. это был наш первый выбор. мы разделили данные в s3 и использовали Athena поверх них. Успех (с точки зрения масштаба, стоимости) использования Athena определяется стратегией разделения. в нашем случае использования мы подсчитали, что достигнем пределов для разделов и, следовательно, будет нецелесообразно / рентабельно.   -  person shamanth Gowdra Shankaramurthy    schedule 11.12.2017


Ответы (2)


Для полнотекстовых запросов

Вы можете спроектировать свое решение следующим образом для улучшения запросов с использованием AWS Elasticsearch в качестве места назначения для расширенных запросов.

  • Настройте место назначения Kinesis Firehouse для Amazon Elastic Search. Это позволит вам выполнять полнотекстовые запросы из вашего веб-интерфейса.
  • Вы можете выбрать резервное копирование только неудачных записей или всех записей. Если вы выберете все записи, Kinesis Firehose выполнит резервное копирование всех входящих исходных данных в корзину S3 одновременно с доставкой данных на Amazon Elasticsearch.

Для простых запросов

Если вы планируете использовать DynamoDB для хранения метаданных журналов, лучше настроить S3 Trigger на Lambda, который будет извлекать файл и обновлять метаданные в DynamoDB.

person Ashan    schedule 09.12.2017
comment
благодаря. это выглядит многообещающим. но разве это не дорого, поскольку для этого требуется собственный кластер на каждый домен? как бы вы взвесили это с подходом DynamoDB? - person shamanth Gowdra Shankaramurthy; 11.12.2017

Является ли лямбда, запускаемая событием S3, вариантом?

Это определенно вариант. Вы можете создать Событие PutObject в корзине S3, и пусть оно вызовет вашу лямбда-функцию, которая вызовет ее асинхронно.

если да, то как сделать эту лямбда отказоустойчивую?

По умолчанию асинхронные вызовы будут дважды в случае сбоя . Чтобы обеспечить отказоустойчивость помимо двух повторных попыток, вы можете использовать очереди недоставленных писем и отправьте неудачные события в очередь SQS или тему SNS для обработки позже.

person x1084    schedule 12.12.2017