2016-07-07 4 views
2

Я пытаюсь использовать Подписанный URL для изображений и как только я смог это сделать. Но потом я удалил его и попытался сделать это еще раз, и я не в состоянии это сделать.Cloudfront не удалось получить доступ S3

Вот что я сделал до сих пор:

  1. Создано CloudFront пары ключей в консоли управления IAM. Загрузили закрытый и открытый ключ, а также отметили идентификатор ключа доступа = XXXXXXXXXXXXXXXXXXXX.
  2. Создано ведро S3. Нет пользовательских конфигурация
  3. Создана распределение CloudFront со следующими параметрами
    • Происхождения доменных имен: мое ведро
    • Ограничения доступ Ковша: Да
    • создали новый Origin Access Идентичность
    • Грант чтение разрешения на ковше : Выбрано Да
    • Ограничить доступ к просмотру (использовать подписи или подписанные файлы cookie) = Да
    • Надежные подписчики = Self

А потом внутри моего Laravel кода, у меня есть следующие в моем контроллере:

$keyPairId = 'XXXXXXXXXXXXXXXXXXXX';  
$privateKey = config_path('pk-XXXXXXXXXXXXXXXXXXXX.pem'); 
$url = "http://xxxxxxxxxxxxxx.cloudfront.net/image.jpg"; 
$cf = new UrlSigner($keyPairId, $privateKey); 
$imgSrc = $cf->getSignedUrl($url, time()); 
echo "<img src='{$imgSrc}' />"; 

Но каждый раз, когда я получаю ту же ошибку:

<Error> 
<Code>MissingKey</Code> 
<Message>Missing Key-Pair-Id query parameter or cookie value</Message> 
</Error> 

Нужна помощь.

ответ

1

Вы должны использовать определенные пары ключей CloudFront и добавить их к $cf. Более подробную информацию о том, как загрузить или загрузить свой собственный открытый ключ:

http://docs.aws.amazon.com/AWSSecurityCredentials/1.0/AboutAWSCredentials.html#KeyPairs

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html#private-content-creating-cloudfront-key-pairs

+0

Я проверил это. Я сделал это. Все еще не в состоянии пройти. –

1

К сожалению, я не могу комментировать (не достаточно реп), но вы можете войти, что подписанный URL выходит быть потом?