AWS S3静态网站托管上的RoutingRules

时间:2020-04-03 05:38:27

标签: amazon-web-services amazon-s3

我已经成功配置了S3存储桶以服务于静态网站,并且如果在存储桶中未找到文件,还可以重定向到Lambda函数。

<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网址,效果很好

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

但是如果我使用https桶url则无法使用。它返回 AccessDenied

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

我也尝试添加cloudfront,问题是相同的。 https://mycloudfront.cloudfront.net/some-file.gif给了我相同的 AccessDenied

好像不适合使用https吗?

1 个答案:

答案 0 :(得分:1)

第一个网址:

mybucket。 s3-网站 -us-east-1.amazonaws.com/some-file.gif

website endpoint。它仅支持HTTP, HTTPS。 Docs写道:

网站终端节点不支持HTTPS或Amazon S3访问点。

第二个网址:

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

Legacy Global Endpoint仍在弗吉尼亚北部地区使用。这些{即服务端点)用于to

以编程方式连接到AWS服务

它们support都是HTTP和HTTPS。

因此,回答您的问题 https: // mybucket.s3-website-us-east-1.amazonaws.com/some-file.gif失败,因为不支持HTTPS网站端点。

https://s3.amazonaws.com/mybucket/some-file.gif失败,因为它用于编程访问,而不是通过浏览器或curl使用。但是,如果将对象设置为 public ,则仍然应该可以访问它们。

对于CloudFront,您需要提供更多信息或提出新问题。这取决于您如何设置CF Disto和存储桶。