AWS S3:无法公开访问

时间:2019-03-08 05:18:21

标签: amazon-web-services amazon-s3 access-denied

目标:使用AWS S3发布静态网页

问题:访问被拒绝和403错误

我已经在这个问题上工作了几个小时。看完几本教程(例如此处的https://www.youtube.com/watch?v=4UafFZsCQLQ)之后,在AWS S3上部署静态网页似乎很容易。但是,在按照教程进行操作时,我会不断遇到“访问被拒绝”错误,在尝试访问我的页面时,我会不断遇到403错误。

403 Error when loading page

在查看应该是我的静态网页(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>

Public Access Settings

我还确保将索引文档正确设置到我的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

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

此问题的根本原因是存储桶级别的公共访问设置。根据屏幕截图,存储桶仅允许授权用户访问存储桶中的任何内容。

即使您已通过存储桶策略授予对存储桶对象的访问权限,公共访问设置也会阻止访问。

要解决此问题,请按以下步骤更改公共访问设置:

  1. 单击编辑公共访问设置,它应显示在设置下方。

enter image description here

  1. 不选中所有复选框。点击保存。它将要求确认。在给定的框中键入“确认”。

enter image description here

这应该显示该存储桶的访问权限为公开。

现在,您应该可以使用给定的端点访问网站以进行静态网站托管。

答案 1 :(得分:1)

与@Sangam Belrose解释的答案类似,但同样需要将其同时应用于整个AWS CONSOLE帐户。当这些更改时,我不再遇到我的问题。下图说明了这一点:

  1. 选择AWS控制台左侧的“此帐户的公共访问设置”选项卡。请注意,此帐户最初只对“此帐户的唯一授权用户”具有访问权限。

ACCOUNT Public Access Settings

  1. 请确保未选中最后一个复选框,该复选框指出“阻止对具有公共策略的存储桶的公共访问和跨帐户访问”。

UNCHECK THIS BOX

  1. 在出现框确认窗口时键入确认

  2. 现在看到,如果此AND存储桶的公共访问设置正确设置,则此存储桶现在将是公共的。

It is now public, woo!

答案 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"]
            }
        ]
    }