Amazon web services AWS S3:无法公开访问

Amazon web services AWS S3:无法公开访问,amazon-web-services,amazon-s3,access-denied,Amazon Web Services,Amazon S3,Access Denied,目标:使用AWSS3发布静态网页 问题:访问被拒绝和403个错误 我已经在这个问题上工作了好几个小时了。在观看了几篇教程(比如这里的一篇)之后,在AWSS3上部署静态网页似乎非常容易。然而,我在学习教程时不断遇到“拒绝访问”错误,在尝试访问我的页面时遇到403个错误 当查看应该是我的静态网页()时,我收到一个403错误(参见上图)。这是在添加以下bucket策略之后: { "Version": "2012-10-17", "Statement": [ {

目标:使用AWSS3发布静态网页

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

我已经在这个问题上工作了好几个小时了。在观看了几篇教程(比如这里的一篇)之后,在AWSS3上部署静态网页似乎非常容易。然而,我在学习教程时不断遇到“拒绝访问”错误,在尝试访问我的页面时遇到403个错误

当查看应该是我的静态网页()时,我收到一个403错误(参见上图)。这是在添加以下bucket策略之后:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::watchyourinterest.live/*"
        }
    ]
}
我还将权限中的所有公共访问设置都更改为False(只是为了确保不存在任何限制,尽管我确实计划在我完成此工作后将其更改为应该的设置)

我还确保将索引文档正确设置为我的index.html页面,并将错误文档正确设置为我的error.html文件

在查看教程时,这似乎会使我的页面变得很好。然而,正如我之前所说的,我不断得到403个错误。经过进一步思考,我试图为所有文件设置对所有人的公共访问权限,但每次我尝试单击“所有人”选择时,都会出现一个错误,显示“访问被拒绝”

同样,当我单独单击文件并以不同的方式对其执行操作时,也会发生同样的情况,如下所示:

在列出我所有存储桶的主页上,我还得到了我的存储桶的这种奇怪的“访问”状态,我希望它是公共的,而不是这样:


任何帮助都将不胜感激

我认为您可能缺少列表操作,请重试

    {
        "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"]
            }
        ]
    }

我想您可能缺少列表操作,请尝试

    {
        "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"]
            }
        ]
    }

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

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

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

  • 单击编辑公共访问设置,它将显示以下设置
  • 不选中所有复选框。点击保存。它将要求确认。在给定框中键入“确认”
  • 这应该将该存储桶的访问权限显示为public


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

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

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

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

  • 单击编辑公共访问设置,它将显示以下设置
  • 不选中所有复选框。点击保存。它将要求确认。在给定框中键入“确认”
  • 这应该将该存储桶的访问权限显示为public


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

    类似于@Sangam Belrose解释的答案,但这也需要应用于整个AWS控制台帐户。当这些都改变了,我不再遇到我的问题。下图说明了这一点:

  • 选择AWS控制台左侧的“此帐户的公共访问设置”选项卡。请注意,此帐户的访问权限最初仅限于“此帐户的授权用户”
  • 确保最后一个复选框,即“阻止对具有公共策略的存储桶的公共和跨帐户访问”未选中

  • 出现方框确认窗口时,键入confirm on

  • 现在请注意,如果此设置和bucket的公共访问设置设置正确,则此bucket现在将是公共的


  • 与@Sangam Belrose解释的答案类似,但这也需要应用于整个AWS控制台帐户。当这些都改变了,我不再遇到我的问题。下图说明了这一点:

  • 选择AWS控制台左侧的“此帐户的公共访问设置”选项卡。请注意,此帐户的访问权限最初仅限于“此帐户的授权用户”
  • 确保最后一个复选框,即“阻止对具有公共策略的存储桶的公共和跨帐户访问”未选中

  • 出现方框确认窗口时,键入confirm on

  • 现在请注意,如果此设置和bucket的公共访问设置设置正确,则此bucket现在将是公共的


  • 谢谢您的帮助。我已经编辑了这篇文章,你可以看到,根据现在包含的截图,我以前已经有过这样的文章,很遗憾这不是问题所在。@PatrickLymanOld我已经检查了你的截图。不,不包括在内。在上一个屏幕截图上,我仍然可以看到bucket只有授权用户访问。通过s3控制台中的edit public access settings(编辑公共访问设置)可以更改访问权限,您只需选择bucket并将其编辑为false即可。谢谢。我已经编辑了这篇文章,你可以看到,根据现在包含的截图,我以前已经有过这样的文章,很遗憾这不是问题所在。@PatrickLymanOld我已经检查了你的截图。不,不包括在内。在上一个屏幕截图上,我仍然可以看到bucket只有授权用户访问。在s3控制台中,通过编辑公共访问设置可以更改访问权限,您只需选择bucket并将公共访问设置编辑为false。另外一个建议是将acl设置为On