Потоковая передача в файловую систему из приложения AWS Lambda NodeJs? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть функция AWS Lambda (NodeJS), которая создает огромную структуру данных.

При построении структуры данных израсходовано около 2 ГБ памяти.

Наконец, я хочу отправить данные на S3 в виде файла / объекта.

Самое простое, что нужно сделать, это преобразовать структуру в гигантскую строку, записать в / tmp, а затем нажать в S3, но такой подход убивает ограничение памяти в 3 ГБ.

Мне интересно, есть ли способ писать в / tmp построчно, чтобы он не выбрасывал остаток моей памяти.

Может ли кто-нибудь указать мне правильное направление?

Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2019

AWS Lambda / tmp на самом деле имеет только 512 МБ пространства и является отдельным ограничением от памяти функции.

Вероятно, вы достигли предела в 3 ГБ, потому что преобразовали структурув строку в памяти, что означает, что у вас есть 2 ГБ исходных данных, а затем 2 ГБ преобразования строки (ну, 1 ГБ, а затем ошибка)

Вы упомянули, что у вас есть:

лямбда-функция AWS (NodeJS), которая создает огромную структуру данных.

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

Так что, если это возможно, я бы рекомендовал разделить рабочую нагрузку между несколькими лямбдами, но если это невозможно при вашем использованииВ этом случае вы можете взглянуть на AWS EC2 или на более простую работу с AWS Fargate , и в этом случае вы не столкнетесь с какой-либоиз ограничений, которые у вас есть с лямбда.

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