У меня проблемы с созданием подписанных URL-адресов с помощью CloudFront. Что бы я ни пытался, я просто получал ответ «Отказано в доступе».
Я создал дистрибутив в CloudFront и идентификатор пары ключей CloudFront. Я скачал закрытый и открытый ключи для этого идентификатора пары ключей.
В простом 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».
Что я делаю не так?