使用AWS我对以下情况非常满意:

  • 将S3存储桶example.com设置为静态网站。
  • 在CloudFront上创建example.com的分发。
  • 使用Route 53和证书管理器允许通过CloudFront使用HTTPS浏览S3存储桶内容。

  • 但是,您知道,仍然可以直接使用HTTP从S3存储桶直接在其备用URL下访问该网站。我想防止用户直接访问S3存储桶URL。

    网络上的一些教程(包括CloudFront documentation)说,我需要创建一个原始访问身份(OAI),并将对S3存储桶的访问限制为仅使用该OAI的CloudFront发行版。但是,本文档还说,我不能将OAI与设置为静态网站端点的S3存储桶一起使用。

    所以这给我留下了一些文档无法解决的问题:
  • 如果我关闭对S3存储桶example.com的静态网站访问,一旦使用OAI将其连接到CloudFront,我是否仍然能够通过HTTPS通过CloudFront访问S3存储桶内容?也就是说,即使我已为存储桶关闭了静态网站托管,CloudFront是否也可以为我的S3存储桶提供“静态网站访问”?
  • 在为静态网站托管配置S3存储桶时,S3允许我设置“路由规则”以将foo.html重定向到bar.html。如果我关闭了S3存储桶的静态网站托管,该如何设置重定向? CloudFront是否提供我可以配置的相似路由规则,或者还有另一种方法可以实现此目的?
  • 最佳答案

    限制从CloudFront访问S3网站终结点的其他方法是:

  • S3存储桶策略,仅允许从CloudFront IP地址进行访问。
    CloudFront IP地址:CloudFront IP range
  • 根据条件(例如CloudFront上的Referer和Whitelist Referer header )创建S3策略,仅当您从CloudFront提供 Assets 时才起作用,而不是主索引页,因为主索引页在请求中将没有Referer header 。

  • 如果您使用S3 rest api终结点而不是s3网站终结点作为源,则您的网站仍可以在HTTPS上运行(SSL在CloudFront上终止),但是有几个问题:
  • 重定向/路由规则不适用于REST API端点。
  • REST API端点不会自动服务器索引页面
    例子:
    如果您访问abc.com/path-> S3静态终结点会将其重定向到abc.com/path/index.html
    (abc.com-> abc.com/index.html的异常,可以通过定义Root文档在CloudFront上完成)

  • 对于foo.html和bar.html的问题,您需要使用Lambda @ edge函数通过原始请求函数来更改URI。

    Lambda@edge examples

    关于amazon-web-services - 关于通过CloudFront作为网站服务非网站S3存储桶的说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58575810/

    10-11 23:19
    查看更多