RoutingRules на хостинге AWS S3 Stati c - PullRequest
1 голос
/ 03 апреля 2020

Я успешно настроил свою корзину S3 для обслуживания веб-сайта stati c, а также для перенаправления на лямбда-функцию, если файл не найден в корзине.

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals/>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <Protocol>https</Protocol>
      <HostName>mylambda.execute-api.us-east-1.amazonaws.com</HostName>
      <ReplaceKeyPrefixWith>/?key=</ReplaceKeyPrefixWith>
      <HttpRedirectCode>307</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

все работает нормально, если я использую http-адрес веб-сайта stati c

http://mybucket.s3-website-us-east-1.amazonaws.com/some-file.gif

, но он не работает, если я использую URL-адрес корзины https. он возвращает AccessDenied

https://s3.amazonaws.com/mybucket/some-file.gif

Я также попытался добавить облачный фронт, и проблема та же. https://mycloudfront.cloudfront.net/some-file.gif дает мне то же самое AccessDenied

похоже на работу по https, может быть?

1 Ответ

1 голос
/ 03 апреля 2020

Первый URL:

mybucket. s3-website -us-east-1.amazon aws .com / some-file.gif

является конечной точкой веб-сайта . Он поддерживает только HTTP, , а не HTTPS. Документы запись:

Конечные точки веб-сайта не поддерживают HTTPS или точки доступа Amazon S3.

Второй URL-адрес:

s3.amazon aws .com / mybucket / some-file.gif

is Legacy Global Endpoint все еще используется регион Северной Вирджинии , Эти (то есть конечные точки обслуживания) используются до :

, программно подключаются к AWS службе

Они поддерживают HTTP и HTTPS.

Поэтому, отвечая на ваш вопрос, https: // mybucket.s3-website-us-east-1.amazon aws .com / some- file.gif завершается ошибкой, потому что HTTPS не поддерживается для конечных точек веб-сайта.

Сбой https://s3.amazonaws.com/mybucket/some-file.gif, потому что он используется для программного c доступа, а не с помощью браузера или скручивания. Но если вы установите ваши объекты как publi c, вы все равно сможете получить к ним доступ.

Для CloudFront вам потребуется предоставить больше информации или создать новый вопрос. Зависит от того, как вы настроили CF disto и ведро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...