amazon-s3 - AWS S3 静态托管 : Routing rules doesn't work with cloudfront

标签 amazon-s3 vue.js single-page-application amazon-cloudfront

我正在为我的 VueJs SPA 应用程序使用 AWS S3 静态 Web 托管。我在 S3 中设置了路由规则,当我使用 S3 静态托管 url 访问它时,它工作得很好。但是,我还配置了 CloudFront 以将其与我的自定义域一起使用。由于单页应用程序需要通过index.html进行路由,因此我在cloudfront中设置了自定义错误页面以将404错误重定向到index.html。所以现在我在 S3 中设置的路由规则不再有效。

让 S3 路由规则与 SPA 的 CloudFront 自定义错误页面设置配合使用的最佳方式是什么?

最佳答案

我想我有点晚了,但无论如何,这里是,

显然,如果您使用 S3 REST_API 端点 (example-bucket.s3.amazonaws.com) 作为 CloudFront 分配的来源,则无法执行此操作,您必须使用 S3 提供的 S3 网站 URL 作为来源(例如- Bucket.s3-网站-[区域].amazonaws.com)。此外,对象必须是公共(public)的,您无法将存储桶锁定到按源策略分配。

所以,

  • 对象必须是公开的。
  • 必须启用 S3 存储桶网站选项。
  • 分发源必须来自 S3 网站 URL,而不是其余 api 端点。

编辑:

我错了,实际上,您也可以使用 REST_API 端点来完成此操作,您只需在 CloudFront 发行版中创建自定义错误响应,可能仅适用于 404 和 403 错误代码,将“自定义错误响应”选项设置为"is",将响应页面路径设置为“/index.html”,将HTTP响应代码设置为“200”。如果您使用控制台,您可以在发行版和错误页面选项卡中找到该选项。

关于amazon-s3 - AWS S3 静态托管 : Routing rules doesn't work with cloudfront,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075001/

相关文章:

vue.js - 如何在 vue composition api 中使用激活和停用?

javascript - AngularJS - 路由更改时更新 Controller

javascript - 将不同 View 模型的属性相互绑定(bind)

amazon-web-services - 如何使用不同的 --endpoint-url 同步 S3 存储桶

python - 无法在 macOS 上启动 localstack

amazon-web-services - S3 存储桶策略 - 隐式允许 GET

javascript - 如何避免网页上的第一个函数调用花费这么长时间?

php - 亚马逊 RDS : How to import database to amazon RDS instance?

vue.js - Vue 渲染一个组件两次

javascript - vue js如何延迟发送数据?