AWS Lambda создает файлы большого размера для S3 - PullRequest
1 голос
/ 11 июля 2019

В настоящее время у нас есть aws-лямбда (среда исполнения на основе Java), которая принимает SNS в качестве входных данных, а затем выполняет бизнес-логику и генерирует 1 XML-файл, сохраняя его на S3.

Реализация теперь заключается в создании XML в расположении .tmp, которое, как мы знаем, имеет ограничение по объему для aws lambda (500 МБ).

Есть ли у нас какой-либо способ по-прежнему использовать лямбду, но можно ли передавать XML-файл на S3 без использования папки .tmp?

Я занимаюсь исследованиями, но до сих пор не могу найти решение для этого.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

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

В противном случае вам все еще нужно временное хранилище для формирования всех частей XML. Вы можете использовать DynamoDB или Redis, и когда вы соберете там все части XML, вы можете начать загружать его по частям, а затем очистить базу данных (или установить TTL для автоматизации очистки).

0 голосов
/ 11 июля 2019

Вы можете напрямую загрузить объект в s3 из памяти, не сохраняя его локально.Для этого вы можете использовать API put object .Тем не менее, имейте в виду, что у вас все еще есть ограничения по времени и общему объему памяти с помощью лямбды.Вы также можете исчерпать их, если размер вашего объекта слишком велик.

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