首页 文章

CloudFront签名网址抛出403 Forbidden错误[重复]

提问于
浏览
1

这个问题在这里已有答案:

我正在尝试将CloudFront用作我的视频点播网站的CDN .

我已经创建了一个HTTP发行版(因为我需要流式传输到iOS设备,因此RTMP不合适),并将原点设置为我的S3存储区,其中存储了我的视频文件 . 我还创建了一个CloudFront密钥对 .

使用AWS PHP SDK,我创建一个这样的签名URL(在Laravel中):

$cloudfront = AWS::get('CloudFront');

$streamHostUrl = 'http://REDACTED.cloudfront.net';
$resourceKey = 'videos/output/hls/REDACTED.m3u8';
$expires = '+10 minutes';

$signed_url = $cloudfront->getSignedUrl(array(
    'url' => sprintf('%s/%s', $streamHostUrl, $resourceKey),
    'expires' => $expires,
    'private_key' => base_path('cloudfront.pem'),
    'key_pair_id' => 'APKAIPX4UJ26KJ65PKIA',
));

这会创建一个URL,看看我的期望 .

私钥文件的路径是正确的,并且我的存储桶中的指定对象( REDACTED.m3u8 )具有 Everyone 能够 View/Download 的权限(该文件夹中的所有其他对象也是如此) . 然后我将URL嵌入到网页中:

<!DOCTYPE html>
<html>
  <head>
    <title>HTTP Live Streaming Example</title>
  </head>
  <body>
    <video src="<?php echo $signed_url; ?>" height="300" width="400" controls>
    </video>
  </body>
</html>

但是,这会向控制台抛出 403 Forbidden 错误 .

我究竟做错了什么?为什么无法通过CloudFront检索任何对象?

我已禁用对签名URL的要求,当我访问没有查询字符串参数的对象(即http://REDACTED.cloudfront.net/videos/output/hls/REDACTED.m3u8)时,视频会显示,因此当我启用对签名URL的需求时会出现问题 .

1 回答

相关问题