我们有多个角度项目,我们喜欢快速上传到S3进行质量保证和测试。
我们将它们全部上传到不同子文件夹中的同一个存储桶中。因此S3桶结构如下:
-- tests-bucket
-- project1
-- index.html
-- project2
-- index.html
然后我们有一个云前端分布和路由器53设置,例如tests.domain.com。
当通过完整路径访问项目时,一切都正常:
tests.domain.com/project1/index.html
tests.domain.com/project2/index.html
但是,当我们尝试访问不带index.html的项目时(
tests.domain.com/project1
或
tests.domain.com/project1/
)我们得到以下错误:
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>index.html</Key>
<RequestId></RequestId>
<HostId></HostId>
</Error>
这使得我们很难测试,因为在初始页面加载之后,
index.html
自动删除,任何额外的重新加载都将导致404错误。
bucket设置为服务网站静态托管,索引和错误文档都指向
index.html文件
.
CloudFront发行版也被设置为具有404错误路径重定向到index.html。
似乎这个设置只对bucket的根路径有效
tests.domain.com/index.html
但不支持子目录。
This AWS article
这似乎是可能的,但在我们的情况下,它不适用于SPA/角应用程序。
通过对此的快速研究,我发现
this tutorial
它使用一个lamda-edge重定向解决了这个问题,但是设置似乎有点过分,而且似乎只支持美国东部的分布。
是否有任何简单的配置可以解决这个问题,只使用不涉及lambda函数的S3/CloudFront/Route53?