Запись в определенную папку в корзине S3 с помощью AWS Kinesis Firehose - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы иметь возможность отправлять данные, отправленные на пожарный шланг Kinesis, основываясь на содержимом данных.Например, если я отправил эти данные JSON:

{
   "name": "John",
   "id": 345
}

, я бы хотел отфильтровать данные на основе идентификатора и отправить их в подпапку моего сегмента s3, например: S3: // myS3Bucket / 345_2018_03_05.Это вообще возможно с Kinesis Firehose или AWS Lambda?

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

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Это невозможно из коробки, но вот некоторые идеи ...

Вы можете написать Преобразование данных в Lambda , которое запускается Amazon Kinesis Firehose для каждой записи. Вы можете написать лямбда-код для сохранения, чтобы сохранить данные в определенный файл в S3, вместо того, чтобы делать это с помощью Firehose. Тем не менее, вы упустите возможности агрегации записей Firehose.

Вы можете использовать Amazon Kinesis Analytics для просмотра записи и отправлять данные в другой поток вывода в зависимости от содержимого. Например, у вас может быть отдельный поток Firehose для каждого канала доставки, при этом запросы Kinesis Analytics выбирают пункт назначения.

0 голосов
/ 06 августа 2019

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

0 голосов
/ 15 мая 2018

Вы, вероятно, хотите использовать уведомление о событии S3, которое срабатывает каждый раз, когда Firehose помещает новый файл в корзину S3 (PUT);уведомление о событии S3 должно вызывать пользовательскую лямбда-функцию, которую вы пишете, которая читает содержимое файла S3, разбивает его и записывает в отдельные сегменты, учитывая, что каждый файл S3, скорее всего, будет содержать много записей, а нетолько один.

https://aws.amazon.com/blogs/aws/s3-event-notification/

...