2016-07-07 121 views
2

我想为图像使用签名的URL,一旦我能够做到这一点。但之后,我删除了它,并试图再次做到这一点,我无法做到这一点。Cloudfront无法访问S3

这是我迄今所做的:

  1. 在IAM管理控制台中创建一个的Cloudfront密钥对。下载 的私钥和公钥,还注意到了访问密钥ID = XXXXXXXXXXXXXXXXXXXX。
  2. 创建了S3存储桶。没有自定义配置
  3. 创建具有以下设置
    • 原产地域名的Cloudfront分布:我斗
    • 限制分区的访问权限:是
    • 创建一个新的原产地访问标识
    • 格兰特阅读区权限:已选择是
    • 限制查看器访问(使用签名的URL或签名Cookie)=是
    • 可信签署人=自我

然后我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

对不起,我不能评论(没有足够的代表),但你可以登录标识的URL来自哪个出来:如何下载或上传自己的公钥的更多信息事后?