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

时间:2014-11-11 18:59:55

标签: amazon-web-services amazon-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": [
          "*"
        ]
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

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

{
    "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存储桶上启用静态网络托管,然后在网络浏览器中转到S3端点(对于我在美国标准中,这将是:http://s3.amazonaws.com/mybucket/public/test.html),您将看到显示的网页,但是如果您尝试通过私人存储桶访问此页面,您将看到它失败。