目前我的应用程序在云端只有应用程序启动时的默认路由加载。当我使用 cloudfront.[address].net
进入站点的根目录时,它会起作用我还使用 WAF 将其限制为仅我的 IP 地址,但是当我进入 cloudfront.[address] 时。 net/signup 或/login 然后我得到
我怎样才能让子路由也起作用?我有我的桶政策
桶策略
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "3",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2SRF18SRG0FC7"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket]/*"
}
]
}
我阻止了所有公共(public)访问,但我也在使用带有 OAI 的云端,所以我认为我不需要担心它被阻止,因为它是通过云端访问的。
感谢您的帮助!
最佳答案
您需要将云端分发的错误文档设置为您的入口文档(index.html)
请确保您已完成以下步骤。
- 仅允许 Cloudfront 执行 GetObject 的 S3 存储桶策略
- 对于 HTTP
404
和403
错误代码,Cloudfront 分发的自定义错误响应设置为/index.html
- Cloudfront 分布处于
deployed
状态,因为 cloudfront 可能需要更长的时间,我们很容易出现观察错误
希望这对您有所帮助。
关于 Angular 路由不适用于 cloudfront + s3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618161/