使用 AWS 我对以下场景非常满意:
example.com
作为静态网站。 example.com
的分布在 CloudFront 上。 但是,如您所知,仍然可以使用 HTTP 直接从 S3 存储桶直接访问其备用 URL 下的网站。我想阻止用户直接访问 S3 存储桶 URL。
网络上的几个教程,包括 CloudFront documentation ,假设我需要创建一个源访问身份 (OAI) 并将对 S3 存储桶的访问限制为使用该 OAI 的 CloudFront 分配。但是,此文档还说我不能将 OAI 与设置为静态网站端点的 S3 存储桶一起使用。
所以这给我留下了一些文档中不清楚的问题:
example.com
,一旦我使用 OAI 将其连接到 CloudFront,我是否仍然能够通过 CloudFront 通过 HTTPS 访问 S3 存储桶内容?也就是说,即使我关闭了存储桶的静态网站托管,CloudFront 是否会为我的 S3 存储桶提供“静态网站访问”? foo.html
至 bar.html
例如。如果我关闭了 S3 存储桶的静态网站托管,我该如何设置重定向? CloudFront 是否提供了我可以配置的类似路由规则,或者是否有其他方法可以实现这一点? 最佳答案
限制从 CloudFront 访问 S3 网站端点的其他方法是:
CloudFront IP 地址:CloudFront IP range
如果您使用 S3 rest api 端点而不是 s3 网站端点作为源,您的网站仍将在 HTTPS 上运行(SSL 在 CloudFront 上终止),但存在几个问题:
例子:
如果您访问 abc.com/path --> S3 静态端点会将其重定向到 abc.com/path/index.html
(abc.com 的异常(exception) --> abc.com/index.html 可以通过定义根文档在 CloudFront 上完成)
对于 foo.html 和 bar.html 的问题,您需要使用 Lambda@edge 函数通过源请求函数更改 URI。
Lambda@edge examples
关于amazon-web-services - 关于通过 CloudFront 作为网站提供非网站 S3 存储桶的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575810/