目标:使用AWS S3发布静态网页
问题:访问被拒绝和403错误
我已经在这个问题上工作了几个小时。看完几本教程(例如此处的https://www.youtube.com/watch?v=4UafFZsCQLQ)之后,在AWS S3上部署静态网页似乎很容易。但是,在按照教程进行操作时,我会不断遇到“访问被拒绝”错误,在尝试访问我的页面时,我会不断遇到403错误。
在查看应该是我的静态网页(http://watchyourinterest.live.s3-website.us-east-2.amazonaws.com)时,我收到403错误(请参见上图)。这是在添加以下存储桶策略之后:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::watchyourinterest.live/*"
}
]
}
我还将权限中的所有“公共访问设置”都更改为“ False”(只是为了确保没有任何限制,尽管我确实计划将它们更改为以后可以使用的状态)。 / p>
我还确保将索引文档正确设置到我的index.html页面,并将错误文档也正确设置到我的error.html文件。
在查看教程时,这似乎应该使我的页面更流畅。但是,正如我之前所说,我一直收到403错误。经过进一步思考,我尝试为所有文件设置对所有人的“公共访问”,但是每次我尝试单击“所有人”选择时,都会收到一个错误消息,提示“访问被拒绝”。
Trying to set file to public access
Access denied error when I attempt setting public access...
类似地,当我单独单击文件并以不同的方式对它们执行操作时,也会发生相同的情况,如下所示:
Access denied again when trying to make public
在列出我的所有存储桶的主页上,当我希望将其公开而不是使用此存储桶时,也会得到这种奇怪的“访问”状态:
"Access" state of bucket, I WANT THIS TO BE PUBLIC
任何帮助将不胜感激!
答案 0 :(得分:1)
此问题的根本原因是存储桶级别的公共访问设置。根据屏幕截图,存储桶仅允许授权用户访问存储桶中的任何内容。
即使您已通过存储桶策略授予对存储桶对象的访问权限,公共访问设置也会阻止访问。
要解决此问题,请按以下步骤更改公共访问设置:
这应该显示该存储桶的访问权限为公开。
现在,您应该可以使用给定的端点访问网站以进行静态网站托管。
答案 1 :(得分:1)
与@Sangam Belrose解释的答案类似,但同样需要将其同时应用于整个AWS CONSOLE帐户。当这些更改时,我不再遇到我的问题。下图说明了这一点:
ACCOUNT Public Access Settings
在出现框确认窗口时键入确认
现在看到,如果此AND存储桶的公共访问设置正确设置,则此存储桶现在将是公共的。
答案 2 :(得分:0)
我认为您可能缺少列表操作,请尝试
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicListObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::watchyourinterest.live"
},
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:Get*","s3:List*"]
"Resource": ["arn:aws:s3:::watchyourinterest.live/*","arn:aws:s3:::watchyourinterest.live"]
}
]
}