Я пытаюсь интегрировать подписанные файлы cookie для дистрибутива CloudFront, который питается из корзины S3, но получает сообщения об ошибках отказа в доступе:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>BLAH BLAH</RequestId>
<HostId>BLAH BLAH</HostId>
</Error>
Что меня сбивает с толку, так это то, что некоторые файлы, похоже, работают стабильно, в то время как другие в том же каталоге, что разрешено моей настраиваемой политикой, не работают при использовании одних и тех же подписанных файлов cookie.
Например: у меня есть файл по адресу /projects/index.html который работает и файл в /projects/src/Runtime.js что не несмотря на использование настраиваемой политики, которая явно позволяет им обоим, имея подстановочный знак в ресурсе: http://test.mydomain.com/projects/*
Оба файла настроены как частные на S3, единственная разница, которую я могу придумать между тем, как запрашиваются эти два файла, заключается в том, что /projects/src/Runtime.js файл запрашивается с реферером test.mydomain.com и нет mydomain.com что послужило первым /projects/index.html запрос.
Я знаю, что файлы cookie устанавливаются правильно для обоих запросов и что настраиваемая политика и подпись для них действительны, потому что, когда я возился с ними и даю им неправильные значения, я получаю другое сообщение об ошибке.
В любом случае! Моя конфигурация следующая:
Настройки CloudFront: i.imgur.com/DMcUeDY.png (Ограничение ссылки на сбой сервера, ба)
У меня есть альтернативное имя хоста, являющееся поддоменом сайта, обслуживающего файл (например, test.mydomain.com). Это не настоящая запись CNAME, и у меня нет сертификата на нее - я ссылаюсь на CloudFront, используя это имя через локальную запись / etc / hosts.
Настройки CloudFront Origin: i.imgur.com/ereGJ42.png (Ограничение ссылки на сбой сервера, да)
Происхождение простое - ссылка на корень моего ведра s3, и я не ограничиваю ведро, потому что он также содержит файлы, которые я хочу оставить общедоступными.
Я изменил глухое поведение: i.imgur.com/5N2RlxM.png (Ограничение ссылки на сбой сервера, ммм)
В основном включен Ограничить доступ для зрителей. Доверенные подписывающие лица - это учетная запись root, которая также является владельцем корзины s3.
Остальные параметры CloudFront остались нетронутыми. У меня есть пара ключей CloudFront, созданная Amazon, и я использую ее с фрагментами, которые Amazon предоставляет для PHP (с использованием openssl_sign), чтобы подписать настраиваемую политику, дающую доступ ко всему каталогу.
Я не могу точно определить, в чем проблема, из-за очень расплывчатого сообщения об ошибке «Доступ запрещен», но я почти уверен, что дело не в том, как я подписываю файлы cookie. Я пробовал использовать неправильные значения и получил разные ошибки, такие как «Неверная подпись» или «Неверная политика», поэтому предполагаю, что моя подпись прошла проверку. Кроме того, как я уже упоминал, некоторые файлы работают.
Я застрял на этом уже несколько дней, любая помощь будет принята с благодарностью!