AWS CloudFront возвращает строку доступа, отклоненную от источника S3, с помощью строки запроса - PullRequest
0 голосов
/ 24 апреля 2018

Я настроил дистрибутив CloudFront и функцию Lambda @ Edge, как описано в этой статье:

https://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/

Теперь я хочу ограничить корзину S3 как частную и разрешать толькоCloudFront распределения доступа к ведру.Я добавил Origin Access Identity в конфигурацию Origin S3 и обновил политику корзины, чтобы разрешить этому OAI GetObject доступ к корзине.Я удалил оператор из политики корзины, который сделал его общедоступным, и изменил ACL на частный.Если я не включаю какие-либо параметры строки запроса в запрос к CloudFront, изображение возвращается, как ожидается, и ссылка S3 не доступна напрямую.

Однако решение полагается на передачу параметров запроса для изменения размера изображений.на лету (через 2 функции Lambda @ Edge) и после того, как корзина стала приватной, я получаю ответ «Отказано в доступе 403» от CloudFront.

Я попытался отключить пересылку строк запроса, которая не имела никакого эффекта.Я также попытался только обновить политику корзины, чтобы удалить публичный доступ на чтение и оставить ACL как PublicRead, и это сработало.Таким образом, это заставляет меня думать, что что-то не так с ACL, установленным в private

Мне было интересно, возможно, S3 возвращает 403 вместо 404, когда корзина становится приватной?Но тогда я не понимаю, почему добавление параметра строки запроса в белый список дает другой результат запроса к тому же изображению без строки запроса

Обновление

Примеррабочий URL: http://<my_distro>.cloudfront.net/images/house.jpeg

Пример неработающего URL: http://<my_distro>.cloudfront.net/images/house.jpeg?size=1200

1 Ответ

0 голосов
/ 25 апреля 2018

После исследования выясняется, что если корзина является частной, то S3 вернет 403 вместо 404, если в корзине нет объекта, что имеет смысл с точки зрения безопасности (предотвращает перечисление объектов и т. Д.).

Код запроса средства просмотра в Lambda из сообщения блога преобразовал URL-адрес изображения при наличии строки запроса.Если это изображение не существует, оно генерирует его на лету.Functino источника ответа из сообщения в блоге проверяет статус 404, чтобы инициировать изменение размера изображения.Однако, когда корзина становится приватной, ответ равен 403, поэтому вместо этого Lambda @ Edge просто перенаправляет ответ.Исправление заключается в том, чтобы либо справиться с 403, либо сделать ведро общедоступным.Я пошел с бывшим

...