У меня есть файл установщика приложения Windows (.exe), сохраненный в ведре s3. Размер этого файла составляет 100 МБ, как указано в консоли s3.
У меня также есть веб-сайт, на котором я делаю URL-адрес объекта этого .exe доступным для определенных пользователей (например, https://s3.(region).amazonaws.com/(Bucket)/(имя_установщика).exe. В прошлом URL-адреса объекта было достаточно, чтобы пользователь мог загрузить установщик на свою локальную машину. Теперь вместо этого URL-адрес объекта загружает только частичный файл (19 МБ) на мою машину.
Если я зайду через консоль S3 и нажму кнопку "скачать"
Он отлично загружает полные 100 МБ на мой компьютер, но как только я использую URL-адрес объекта, он дает мне частичный файл.
У меня есть другой установщик для Mac (.dmg), который также занимает 100 МБ в другом каталоге s3 в том же сегменте. Для этого файла URL-адрес объекта работает просто отлично. Проблема только в этом .exe файле.
Кто-нибудь еще сталкивался с этим?
-Я попытался повторно загрузить файл на s3 на случай, если он может быть поврежден на самом s3. -Я пытался добавить метаданные в файл в s3, чтобы указать, что это приложение - Я исследовал использование AWS cli для загрузки файла вместо URL-адреса объекта, но это похоже на бинт - это должно работать.
Единственная разница между прямым использованием URL-адреса и ссылкой для скачивания в консоли заключается в том, что ссылка для скачивания предваряет URL-адрес, чтобы пометить его как вложение. Если вы сравните два URL-адреса, они должны быть идентичными по байтам до начала параметров запроса. Вы делали такое сравнение?
@ erik258 Я абсолютно уверен, что получил правильный URL-адрес объекта. Я проверил это вчетверо и добавил, что этот же URL-адрес функционировал в прошлом, и ничего в URL-адресе не изменилось с тех пор, как эти успешные итерации.
@AnonCoward Отличное предложение. Я только что сравнил их, и хотя URL-адреса одинаковы, я заметил, что один из заголовков изменился. В запросе URL-адреса объекта длина содержимого составляет 20676608 (около 20 МБ) байт, но в запросе URL-адреса загрузки ожидаемая длина содержимого составляет 105589205 (около 100 МБ). Это похоже на суть проблемы. Я собираюсь копать дальше.
Как вы запрашиваете URL-адрес объекта, который вызывает отправку (короткого) заголовка длины содержимого? Это необязательно. Почему ваш HTTP-клиент отправляет его?
@jarmod Все, что я делаю, это нажимаю ссылку «URL-адрес объекта» в консоли aws для этого конкретного файла. Я смотрю вкладку сети, пока она обрабатывается, и проверяю заголовок сетевого запроса для этой загрузки.
Ссылка «URL-адрес объекта» всегда содержит только URL-адрес объекта без каких-либо параметров запроса. Сгенерированная ссылка для скачивания не включает длину содержимого. Как вы получаете URL-адрес с указанной длиной содержимого?
Итак, я не обязательно нашел ПРИЧИНУ этой странности. Но я нашел способ решить эту проблему.
Я обнаружил, что ТОЛЬКО это конкретное имя файла вызывало проблемы. Если я сохранил нужный файл под любым другим именем, он работал нормально. Поэтому я просто изменил имя.
Может быть, это поможет кому-то еще!
Были ли в имени файла установщика какие-либо необычные символы, например +
? Вы сравнивали записи журнала доступа к S3 для неудачных и успешных загрузок?
Было бы неплохо понять первопричину здесь. Трудно представить, что это просто ключ загружаемого объекта.
вы абсолютно уверены, что у вас есть правильный URL-адрес объекта?