Cloudfront无法访问S3

时间:2016-07-07 09:16:29

标签: amazon-web-services amazon-s3

我正在尝试使用签名URL进行图像处理,一旦我能够做到这一点。但后来,我删除了它,并试图再次这样做,我无法做到这一点。

这是我到目前为止所做的:

  1. 在IAM管理控制台中创建了一个Cloudfront密钥对。下载 私钥和公钥,并注意到访问密钥ID = XXXXXXXXXXXXXXXXXXXX。
  2. 创建了一个S3存储桶。没有自定义配置
  3. 使用以下设置创建Cloudfront分发
    • Origin域名:我的桶
    • 限制存储分区访问:是
    • 创建了新的Origin Access Identity
    • 授予Bucket读取权限:选择是
    • 限制查看者访问权限(使用签名的URL或签名的Cookie)=是
    • 受信任的签名者=自我
  4. 然后在我的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>
    

    需要帮助。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

很抱歉,我无法发表评论(代表不够),但是您可以记录之后签名的网址是什么吗?