AWS S3/Ускоренная загрузка сегментов происходит ТОЛЬКО для пользователей с медленным подключением

Мы даем возможность нашим пользователям загружать видео в нашу корзину S3. Он был оснащен опцией "ускорение" и использованием загрузки нескольких частей из нашего JS. Тем не менее, мы заметили нечто очень тревожное: у нас есть тысячи успешных загрузок из стран, где интернет быстрый.

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

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://our-secret-bucket-xxxxxx.s3-accelerate.amazonaws.com/tyoeu/Abbey%…BAYmLRf4.YqtrWLwkD9uc5wGp0.rpyIV6xqDHxHqNaEsaxQTMAHs3g8DXdL3. (Reason: CORS request did not succeed).

Настройка CORS для этого сегмента выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>43200</MaxAgeSeconds>
    <ExposeHeader>ETag</ExposeHeader>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Мы помогаем загружать неудачных пользователей вручную, прося их загрузить их в Dropbox и поделиться с нами ссылкой - но это еще одно доказательство того, что что-то не так - если они могут загружать в Dropbox свои медленные соединения, почему они не могут загрузить в AWS/S3? Это грызло наши души уже довольно давно, и мы не можем понять, что не так.

Конечно, мы не единственная компания на планете Земля, которая позволяет людям со всего мира загружать большие файлы. Почему мы терпим неудачу с медленными пользователями соединения?

Ответ 1

Похоже, что это может быть проблема aws.config.httpOptions.timeout ожидания запроса, пытались ли вы изменить aws.config.httpOptions.timeout? По умолчанию это две минуты, но вы можете полностью удалить тайм-аут, установив его на ноль. Более подробную информацию об этом можно найти здесь.

Отредактировано, чтобы исправить неработающую ссылку.

Ответ 2

Пожалуйста, попробуйте следующие шаги

1. Создайте неускоренную версию корзины s3 и попробуйте с этими пользователями. Если это работает, то создайте программу для копирования. Я не уверен, почему Корс там.

2. Используя инструмент сравнения скорости ускорения передачи Amazon S3

  1. попробуйте двойной стек Передача данных в и из корзины с ускорением с помощью одного из следующих доменных имен конечной точки s3-ускорения:

bucketname.s3-accelerate.amazonaws.com - для доступа к корзине с ускорением.

bucketname.s3-accelerate.dualstack.amazonaws.com - для доступа к корзине с ускорением через IPv6. Конечные точки Amazon S3 с поддержкой двух стеков поддерживают запросы к сегментам S3 через IPv6 и IPv4. Конечная точка двойного стека Transfer Acceleration использует только тип имени конечной точки в виртуальном размещенном стиле. Дополнительную информацию см. В разделах Начало работы: выполнение запросов по IPv6 и использование конечных точек с двумя стеками Amazon S3. Вы можете использовать инструмент сравнения скорости ускорения передачи Amazon S3 для сравнения ускоренной и неускоренной скорости загрузки по регионам Amazon S3. Средство сравнения скорости использует многоэтапную загрузку для передачи файла из браузера в различные регионы Amazon S3 с использованием ускорения переноса и без него.

Это скопировано из этой статьи https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

http://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html

Ответ 3

Я не думаю, что это связано с CORS. Я читал, что браузеры иногда могут сбить вас с толку, показывая ошибки, связанные с CORS, когда на самом деле причина в другом. Однако вы не указали много информации: как ваши пользователи загружают файлы в корзину, какой SDK вы используете, какой источник, ноутбук, мобильный телефон и т.д., Из каких мест происходит сбой загрузки и т.д. О какой "консоли" ты говоришь?

Я думаю, что у вас проблема с размером ваших файлов, так как они видео. Это то, что я бы попробовал. Я взял это из часто задаваемых вопросов S3:

Вопрос: Сколько данных я могу хранить в Amazon S3?

Общий объем данных и количество объектов, которые вы можете хранить, не ограничены. Размер отдельных объектов Amazon S3 может составлять от 0 до 5 терабайт. Самый большой объект, который может быть загружен в одном PUT, составляет 5 гигабайт. Для объектов размером более 100 мегабайт клиенты должны рассмотреть возможность использования многочастной загрузки.

Попробуйте Multi Part. Возможно, причина проблемы не в том, что вы не можете контролировать, возможно, в этих местах Интернет имеет какую-то конфигурацию протокола, которая не позволяет вашему инструменту работать должным образом. Я бы эмулировал с помощью инструмента VPN загрузку из одного из этих мест, используя разные методы, такие как составные части или видео разных размеров, чтобы увидеть порог.