Я пытаюсь создать в AWS повторно используемую безсерверную службу загрузки больших файлов (у нас есть несколько сайтов).Я хотел бы настроить API-шлюз в AWS и использовать CORS для управления тем, какие сайты можно загружать, что позволяет сайтам использовать код на стороне клиента .Вот то, что я пробовал, и препятствия, с которыми я столкнулся.Хотите знать, есть ли у кого-нибудь предлагаемые обходные пути?
- Вызов S3 из клиентского кода загрузки потребовал бы от меня предоставления аутентификационной информации на стороне клиента, что кажется плохим
- API Gateway не делаетпо-видимому, поддерживает вызов многоточечной S3 через тип интеграции службы AWS (URL-адрес привязан к общему URL-адресу службы S3, а IAM не поддерживается в типе интеграции HTTP)
- Использование лямбда-функции для вызова многочастного API не будет работатьПоскольку полезная нагрузка запроса вызова может занять всего 6 МБ, а для получения минимального размера загружаемой части 5 МБ базовая скорость передачи данных превысит 6 МБ
- . Я мог бы выполнить свою частичную загрузку.функциональность в Lambda, хранение фрагментов в S3, но я не могу понять, как объединить их вместе в памяти Lambda и в пространстве хранения tmp (по-прежнему потоки PassThrough не работают с AWS SDK)
Есть идеи?Стоит ли копаться в этом?Или для этого варианта использования без сервера нет доступа?
Таким образом, после дальнейшей работы с Amazon можно использовать предварительно подписанные URL-адреса с помощью составного API, но это не очень удобно.К таким шагам относятся следующие:
- Создание нового файла и разбиение его на части.
- Создание предварительно назначенного URL-адреса для инициирования многоэтапной загрузки.
- Используйте предварительно назначенный URL-адрес для начала загрузки.
- Создайте предварительно назначенный URL-адрес для каждой детали, используя номер детали.
- Используйте URL-адреса для отправки запросов PutPart.Отслеживайте Etag, который возвращается для номера детали.
- Объедините все части и соответствующие ETAG для формирования тела запроса.
- Создайте предварительно назначенный URL-адрес для завершения загрузки MP.
- Завершите многоэтапную загрузку, отправив запрос с предварительно заданным полным URL-адресом многоэтапной загрузки.
Примет ответ Анджело, поскольку он указывал в этом направлении, что с технической точки зрения представляется возможным