【发布时间】:2018-07-03 10:45:26
【问题描述】:
我在使用 CloudFront 生成签名 URL 时遇到问题。无论我尝试什么,我都会收到“拒绝访问”响应。
我在 CloudFront 中创建了一个分配,以及一个 CloudFront 密钥对 ID。我已经下载了该密钥对 ID 的私钥和公钥。
在一个简单的 PHP 脚本中,我正在尝试以下操作:
use Aws\CloudFront\CloudFrontClient;
$cloudfront = new CloudFrontClient([
'credentials' => [
'key' => '[redacted]', // Access key ID of IAM user with Administrator policy
'secret' => '[redacted]', // Secret access key of same IAM user
],
'debug' => true,
'region' => 'eu-west-1',
'version' => 'latest',
]);
$expires = strtotime('+6 hours');
$resource = 'https://[redacted].cloudfront.net/mp4/bunny-trailer.mp4';
$url = $cloudfront->getSignedUrl([
'url' => $resource,
'policy' => json_encode([
'Statement' => [
[
'Resource' => $resource,
'Condition' => [
'DateLessThan' => [
'AWS:EpochTime' => $expires,
],
],
],
],
]),
'expires' => $expires,
'key_pair_id' => '[redacted]', // Access key ID of CloudFront key pair
'private_key' => '[redacted]', // Relative path to pk-[redacted].pem file
]);
但是当访问生成的 URL 时,它总是在浏览器中给我一个错误,代码为“AccessDenied”。
我做错了什么?
【问题讨论】:
-
创建自定义策略而不是使用默认策略的任何特殊原因,因为您已经在签名的 url 上设置了过期时间?不一定是问题,我只是想消除变量。
-
-
所以即使没有特定的政策它也不起作用?除了缺少可能的查询字符串参数外,我没有任何直接的想法。
标签: amazon-web-services amazon-cloudfront