我们在Amazon S3上托管了一个静态Angular 2网站。
我们的应用部署在http://abc.domain.s3.amazonaws.com/index.html 如果用户未登录,我们的应用程序会将用户重定向到登录页面:http://abc.domain.s3.amazonaws.com/Platform/Login,该页面工作正常。
但是,如果刷新http://abc.domain.s3.amazonaws.com/Platform/Login(或直接访问它),它将返回“ NoSuchKey,指定的键不存在”错误。
我们已将“索引文档”和“错误文档”设置为index.html。并且该存储桶具有公共访问权限。但是我们无法解决此问题。
我们没有将Cloudfront与S3和route53结合使用。
感谢您的帮助!
答案 0 :(得分:1)
检查您的存储桶策略设置。如果未设置,请在下面使用 Permission-> Bucket Policy
设置存储桶策略{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt126637111000",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::www.xyz.com/*"
},
{
"Sid": "S3 Access Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::142412414124:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::www.xyz.com/*",
"arn:aws:s3:::www.xyz.com"
]
}
]
}
还要检查CORS配置。您可以在下面找到 权限-> CORS配置
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>