AWS: S3 Website + CloudFront CDN == AccessDined

Автор: | 10/19/2016
 

aws-logo-square-02Ошибка

Создаём S3 корзину, настраиваем>>> её как Static Website.

Далее — подключаем>>> к ней ClodFront distribution.

Для S3 — настраиваем редирект всех ошибок на index.html, пробуем открыть несуществующую страницу — и «ловим» Acess Denied вместо перенаправления:

$ curl -L http://profile-testing.domain.com/signinscsdc
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>0C488EAFDD6F8311</RequestId><HostId>za8ikpctv9Pr/Hn/AEyb09ikAAlUmd/Fq1ICHjA6AVPq0P2XDn87SNDMrEUkP1jMvTPQ8p2lktw=</HostId></Error>

tag_s3_5

Причина

При создании нового Distribution в CloudFront — он предлагает указать Origin Domain Name, и при перемещении курсора в поле ввода имени — выдаёт список URL для различных сервисов в этом аккаунте:

tag_s3_7

При этом, если выбрать имя S3 корзины из этого списка — то её URL будет вида:

profile.domain.com.s3.amazonaws.com

Решение

Правильный Origin корзины, которая подключается к CDN должен быть в виде её Endpoint, который указан в свойствах корзины:

tag_s3_8

Т.е. — включать в себя website и регион, например:

profile.domain.com.s3-website-eu-west-1.amazonaws.com

Проверяем:

tag_s3_9