[英]RoutingRules on AWS S3 Static website hosting
我已成功配置我的 S3 存储桶来为 static 网站提供服务,并且如果在存储桶中找不到文件,还重定向到 lambda function。
<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>
如果我使用 static 网站的 http url ,它工作正常
http://mybucket.s3-website-us-east-1.amazonaws.com/some-file.gif
但如果我使用 https 存储桶 url,它就不起作用。 它返回AccessDenied
https://s3.amazonaws.com/mybucket/some-file.gif
我也尝试添加云端,问题是一样的。 https://mycloudfront.cloudfront.net/some-file.gif给了我同样的AccessDenied
就像不为 https 工作一样吗?
第一个 url:
我的桶。 s3-网站-us-east-1.amazonaws.com/some-file.gif
是一个网站端点。 它只支持 HTTP,不支持 HTTPS。 文档写道:
网站终端节点不支持 HTTPS 或 Amazon S3 接入点。
第二个 url:
s3.amazonaws.com /mybucket/some-file.gif
是Legacy Global Endpoint仍使用 N. Virginia 地区。 这些(即服务端点)用于:
以编程方式连接到 AWS 服务
它们同时支持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 和存储桶。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.