我想为图像使用签名的URL,一旦我能够做到这一点。但之后,我删除了它,并试图再次做到这一点,我无法做到这一点。Cloudfront无法访问S3
这是我迄今所做的:
- 在IAM管理控制台中创建一个的Cloudfront密钥对。下载 的私钥和公钥,还注意到了访问密钥ID = XXXXXXXXXXXXXXXXXXXX。
- 创建了S3存储桶。没有自定义配置
- 创建具有以下设置
- 原产地域名的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>
需要帮助。
我检查了。我已经做到了。仍然无法通过。 –