Доступ запрещен для подписанного URL .NET CloudFront - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь настроить облачный фронт для моей корзины s3, который позволит пользователям только читать или писать с подписанными URL-адресами (читать файл, загружать и загружать)

S3 не 'не имеет публичных разрешений на чтение / запись.

CloudFront - это: Http и HTTPS.У этого есть Доверенный Подписчик как я.Имеет доступ с ограниченным доступом.У него есть имя домена происхождения как origin-domain-name / public.Наконец, у него есть идентификатор доступа к источнику как origin-access-identity / cloudfront / XXXXXXX.

У меня есть файл pem cloudfront и идентификатор закрытого ключа aws.

Мой код c # для генерации подписанного URLis:

  StreamReader sr = new StreamReader("../../keys/CloudFront-PrivateKey.pem");

var url = AmazonCloudFrontUrlSigner.GetCannedSignedURL(
            AmazonCloudFrontUrlSigner.Protocol.http,
            "http://xxxxxxxxxx.cloudfront.net",
            sr,
            "public/AddinJudgeIssue.png",
            "<AWS Private Key ID>",
            DateTime.Now.AddDays(2));

Каждый раз, когда я выполняю код, он генерирует URL.Однако, когда я копирую и вставляю его в URL-адрес, он говорит: «Доступ запрещен».

Прежде всего, кто-нибудь имеет представление о том, почему это происходит?

Во-вторых, это работает как-то,Могу ли я использовать эту же технику для загрузки ресурсов в корзину?

Спасибо и прошу прощения за мое невежество.Я покопался в документах aws, но не нашел простого руководства.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Проведя некоторый эксперимент, я получил его на работу.Хотя я использовал корневые учетные данные и ключи pem для генерации подписанного URL-адреса, мне все же пришлось предоставить открытый доступ на чтение / запись к моей корзине S3.Это было причиной, по которой я получал ошибку «Отказано в доступе».При настройке Cloudfront опция «ограничить доступ к корзине» в любом случае ограничивает мою корзину.

0 голосов
/ 15 мая 2019

Просмотр документации предлагает две проблемы:

"http://xxxxxxxxxx.cloudfront.net" не должен включать http://, так как поле distributionDomain и ожидает имя домена, а не базовый URL.

"public/AddinJudgeIssue.png" должен иметь ведущий /, потому что это поле resourcePath.Пути начинаются с /, даже если ключи объектов этого не делают.

...