我有一个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访问该页面时,你会发现它失败了。