Проблемы, генерирующие подписанные URL-адреса CloudFront; всегда доступ запрещен - PullRequest
0 голосов
/ 03 июля 2018

У меня проблемы с созданием подписанных 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».

Что я делаю не так?

1 Ответ

0 голосов
/ 16 июля 2018

Обнаружено, в чем проблема. Объекты в моем контейнере S3 не были общедоступными, и я не добавил идентификатор доступа к источнику, поэтому CloudFront не мог извлечь объекты из моего источника (моего контейнера S3) для их кэширования.

Как только я добавил Origin Access Identity и добавил его в политику своей корзины S3, мои объекты сразу же стали доступны через мой дистрибутив CloudFront через подписанные URL-адреса.

Соответствующая документация: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#private-content-creating-oai

...