Как ограничить размер файла при загрузке с предварительной подписью AWS S3?

#amazon-web-services #amazon-s3 #aws-lambda

#amazon-web-services #amazon-s3 #aws-lambda

Вопрос:

Здравствуйте, я работаю над приложением, в котором пользователь может загружать свое собственное видео (да, как Tiktok). Я использую прямую загрузку с предварительной подписью с использованием маршрута PUT для максимальной скорости загрузки.

Мой вопрос в том, как мне действительно ограничить размер файла, который мой пользователь может загружать для видео?

Решение, которое я придумал, — использовать lambda для проверки длины содержимого объекта, который был загружен. Но, насколько я знаю, в заголовке клиента были установлены свойства content-length. Что делать, если длина содержимого в заголовке и фактический размер файла, загруженного на s3, не совпадают? Возможно ли вообще, что кто-то может сделать это с помощью загрузки?

Комментарии:

1. Связанные: forums.aws.amazon.com/thread.jspa?threadID=12887

Ответ №1:

Решение, которое я придумал, — использовать lambda для проверки длины содержимого объекта, который был загружен.

Альтернативой является set content-length-range matching POST policy .

Что делать, если длина содержимого в заголовке и фактический размер файла, загруженного на s3, не совпадают

Не уверен, почему это может произойти, но помимо использования свойства content-length, многочастную загрузку тоже стоит рассмотреть. Это просто серия регулярных запросов. Вы инициируете загрузку из нескольких частей, отправляете один или несколько запросов на загрузку частей, а затем завершаете процесс загрузки из нескольких частей. Вы подписываете каждый запрос индивидуально.

A Node.js плагин, поддерживающий S3-streaming-upload.