Как я могу загрузить большой медиафайл в S3 со стороны клиента?

У меня есть форма, в которой пользователь отправляет изображение со стороны клиента. В настоящее время я использую AWS ampify для загрузки изображений в s3. Я пока не сталкивался с проблемой, потому что в большинстве случаев пользователи выбирали изображения размером менее 5 МБ. Но прямо сейчас мне нужно расширить этот предел, а также оптимизировать производительность, потому что предел размера увеличен. Когда я исследовал производительность, я узнал об ускорении передачи и его совместимости с AWS SDK, но не с расширением AWS. Итак, мне пришлось перенести логику загрузки в SDK. Архитектура, которой я придерживаюсь в бэкэнде, - это Serverless и Lambda. Допустим, пользователь отправляет свою форму, цикл запроса содержит изображение размером 10 МБ. Но лямбда не будет обрабатывать этот запрос, потому что цикл лямбда-запрос-ответ ограничен транзакциями 6 МБ. Как я могу улучшить производительность,вместе с увеличением лимита размера? Кроме того, можно ли этого достичь с помощью самого усилителя AWS?

1 ответ

Ваш вариант использования лучше всего подходит для предварительно подписанных URL-адресов S3. В этом случае ваша лямбда-функция генерирует URL-адрес, используя aws-sdk для загрузки s3, и возвращает только URL-адрес для вашего интерфейса. Затем вы можете загрузить прямо на этот URL-адрес из внешнего интерфейса без повторного вызова AWS Lambda. Вся передача данных будет происходить между вашим интерфейсом и S3.

Вы можете найти более подробную информацию об этом решении здесь.

Другие вопросы по тегам