我可以为S3存储桶中的某个文件设置策略吗



我有一个S3存储桶"mybucket",里面有很多文件,例如:

upload1/123.jpg
public/353.jpg
public/123.jpg
upload2/33.jpg
upload3/423.jpg

据我所知,文件夹只是一种方便,无论如何都只是对象。那么,是否可以将所有公共/*对象公开,而不公开其他对象?我该怎么做?

编辑:我读了这么多书,像这样的东西能起作用而不影响其他东西吗?

{
  "Id": "Policy1415732583092",
  "Statement": [
    {
      "Sid": "Stmt1415732573054",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucket/public/*",
      "Principal": {
        "AWS": [
          "*"
        ]
      }
    }
  ]
}

是的,这很好用。您可以将此策略添加到您的bucket权限中:

{
    "Version": "2012-10-17",
    "Id": "123",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:**",
            "Resource": "arn:aws:s3:::mybucket/public/*"
        }
    ]
}

然后将一个名为test.html的文件添加到您的公用文件夹和一个私人文件夹中:

<html>
    <body>
    test
    </body>
</html>

然后在s3 bucket上启用静态web托管,然后转到web浏览器中的s3端点(对我来说,在美国标准中,这将是:http://s3.amazonaws.com/mybucket/public/test.html),你会看到显示的网页,但当你试图通过私有bucket访问该页面时,你会发现它失败了。

最新更新