繁体   English   中英

AWS S3 Static 网站托管上的路由规则

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM