AWS S3上的静态Web托管使我“拒绝403权限”

时间:2019-05-21 18:51:16

标签: amazon-web-services amazon-s3 web-hosting

如果有人能指出我做错的地方,我将不胜感激。参见以下步骤

  1. 我在route53中有一个域名。

  2. 基于域名,我创建了一个存储桶名称(出于我的问题,我们将存储桶和域名保留为abc.nl)

  3. 创建了存储桶,而没有更改任何默认提供的检查清单。
  4. 点击存储桶(abc.nl)并添加到“存储桶策略”下方
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567:user/usrname"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::abc.nl/*"
        }
    ]
}
  1. 我已在IAM中提供了username的{​​{1}}政策。
  2. “我的封锁”公共访问权限(帐户设置)也保持不变。 Block public access (account settings)
  3. 现在我将所有静态文件上传到存储桶(abc.nl)。
  4. 在属性标签中,我在AmazonS3FullAccess块下添加了index.html

现在,按照手册,我应该能够单击链接并访问页面。 但是由于某种原因,它引发了403访问被禁止的错误。

据我了解,只需添加static website hosting即可打开公共访问权限。但是对我来说,我看不到“公共”标签。所以,不知道发生了什么。 (我的理解可能是错误的,因此这篇文章。)

如果您想知道哪本手册,请关注https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html how to host static web site

无论如何,有人指出我在哪里做错了,我应该从存储桶的权限中选择哪些选项?我可能会漏掉一些行。

PS:我多次创建和删除相同的存储桶,只是每次都重新开始。

2 个答案:

答案 0 :(得分:1)

存储桶策略的Principal值错误。从您链接到的Example: Setting up a Static Website Using a Custom Domain复制:

  

要授予公共读取访问权限,请将以下存储桶策略附加到 example.com 存储桶,并用存储桶名称替换 example.com

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
    "Effect":"Allow",
    "Principal": "*",
    "Action":["s3:GetObject"],
    "Resource":["arn:aws:s3:::example.com/*"]
  }]
}

答案 1 :(得分:0)

要使存储桶公开(=每个人),您需要在存储桶策略中将*设置为主体:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::abc.nl/*"
        }
    ]
}

还请检查存储桶上是否没有阻止公共访问设置,因为这会阻止您将存储桶公开。