У нас есть поток AWS Kinesis, который принимает около 15 небольших двоичных сообщений в секунду.В качестве последней меры по восстановлению данных мы хотели бы сбросить все сообщения, полученные в корзине S3 с TTL за 1-2 недели.
Мы могли бы использовать функцию Lambda для вывода каждого сообщения Kinesis в новый файл вS3.Но многие небольшие PUT стоят дорого, особенно потому, что к этим данным не будут часто обращаться (вручную, если это так).
В качестве альтернативы, AWS Firehose будет собирать для нас сообщения и отправлять их в S3 как один объект S3.Но, как я понимаю - пожалуйста, поправьте меня - Firehose просто объединяет записи, поэтому это не работает, когда сообщения двоичные и логически разделены (в отличие от строк в файле журнала).
В настоящее время я думаю об использовании лямбдыфункция прикреплена к Firehose, поэтому Firehose собирает записи за X минут, которые мы затем архивируем / архивируем, создавая файл для каждой записи и отправляя на S3 в виде одного архива.
Подходит ли это?Если да, то как мы собираем записи, используя Lambda?Мы обрабатываем многие-к-одному, поэтому я не уверен, какие коды результата / статуса передать обратно в Firehose. (Экосистема AWS для меня очень нова, поэтому, я думаю, я мог упустить очевидное решение.)