Назад | Перейти на главную страницу

Cloudfront возвращает 403 через минуту после загрузки

У меня облачный раздача перед ведром s3. URL-адреса Cloudfront ограничены, а ключи должны быть подписаны URL-адресом. Корзина s3 также ограничена, что позволяет читать только облачный интерфейс

Иногда после того, как я успешно загружаю изображение на свой s3, cloudfront возвращает 403, когда я впоследствии пытаюсь получить изображение. Это длится около минуты, после чего cloudfront начинает правильно обслуживать изображение.

Это происходит даже после успешной загрузки изображения, и я могу просмотреть его вручную, перейдя в консоль s3.

Из-за чего-то ваши файлы запрашиваются у CloudFront до того, как они окажутся в корзине. Конфигурация CloudFront по умолчанию вызывает отрицательное кэширование на срок до 5 минут.

По умолчанию, когда ваш источник возвращает код состояния HTTP 4xx или 5xx, CloudFront кэширует эти ответы об ошибках в течение пяти минут, а затем отправляет следующий запрос объекта вашему источнику, чтобы узнать, была ли решена проблема, вызвавшая ошибку, и запрошенный объект теперь доступен.

-http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

Если браузер или что-то еще пытается загрузить файл с этого конкретного края CloudFront (или любого другого края, если запрос проходит также через региональный край - CloudFront теперь имеет два пограничных слоя) до завершения загрузки в S3 , S3 вернет ошибку, а CloudFront - в этом граничном местоположении - кэширует эту ошибку и запомнит в течение следующих 5 минут, чтобы не пытаться повторить попытку.

Этот таймер можно настроить.

Вы можете указать продолжительность кэширования ошибок - Ошибка кеширования Минимальный TTL- для каждого кода состояния 4xx и 5xx, кэшируемого CloudFront. Для процедуры см. Настройка поведения ответа при ошибке.

-http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

Установите значение 0 для любых кодов ошибок, например 403, где вы хотите отключить кеш ошибок.

Содержание этого ответа адаптировано из моего исходного сообщения на Переполнение стека.