WedX - журнал о программировании и компьютерных науках

Может ли Kinesis Firehose получать несжатый контент из подписки CloudWatch Logs?

Я использую Kinesis Firehose для копирования журналов приложений из CloudWatch Logs в корзины S3.

  1. Журналы приложений записываются в CloudWatch
  2. Подписка Kinesis на группу журналов извлекает события журнала в поток Kinesis.
  3. Поток доставки пожарного шланга использует лямбда-функцию для распаковки и преобразования исходной записи.
  4. Firehose записывает преобразованную запись в место назначения S3 с включенным сжатием GZIP.

Однако с этим потоком есть проблема. Часто я замечал, что функция лямбда-преобразования не работает, потому что выходные данные превышают Ограничение полезной нагрузки ответа 6 МиБ для синхронного вызова Lambda. Это имеет смысл, потому что входные данные сжимаются, а выходные данные не сжимаются. Выполнение этого способа кажется единственным способом правильно установить расширение файла и тип MIME для результирующего объекта в S3.

Есть ли способ передать входные данные функции лямбда-преобразования без сжатия?

Это позволит выровнять размеры ввода / вывода. Я уже пытался уменьшить размер буфера в потоке доставки Firehose, но ограничение размера буфера, похоже, относится к сжатым данным, а не к необработанным данным.


Ответы:


1

CloudWatch Logs всегда доставляется в сжатом формате, что является преимуществом с точки зрения стоимости и производительности. Но я понимаю ваше разочарование из-за неправильного расширения файла в S3.

Что вы могли бы сделать: 1) Сделайте так, чтобы ваша лямбда распаковывалась при чтении и сжималась при записи.
2) Создайте триггер события S3 в ObjectCreate, который переименовывает файл с правильным расширением. Из-за того, как пожарный шланг записывает в S3, вы не можете использовать суффиксный фильтр, поэтому вам нужно будет проверить лямбда-выражение, переименовано ли оно уже.

лямбда-логика

if object does not end .gz
then
   aws s3 mv object object.gz
end if
19.08.2019

2

Нет, похоже, невозможно изменить сжатие входных данных CloudWatch Logs. CloudWatch Logs всегда будет отправлять сжатые данные в формате GZIP в поток Kinesis.

Для подтверждения взгляните на эталонную реализацию AWS kinesis-firehose-cloudwatch-logs-processor обработчика новой строки для CloudWatch Logs. Этот обработчик принимает входные данные, сжатые GZIP, и возвращает распакованное сообщение в качестве выходных данных. Чтобы обойти ограничение в 6 МБ и избежать сообщений об ошибках body size is too long, обработчик ссылок разделяет ввод на две части: полезные данные, которые соответствуют пределу в 6 МБ, и оставшуюся часть. Остаток повторно вставляется в Kinesis с помощью PutRecordBatch.

19.08.2019
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]