我是AWS S3的新手,并试图弄清楚它是如何工作的。
为了使单个文件在Internet上公开,您似乎必须在特定对象上将“公共访问”设置为“所有人”。
但是,存储桶本身具有相同的权限;
即使我将存储桶的“公共访问权限”更改为“每个人”,似乎仍然使用了单个对象的权限(屏幕截图1)。
如果是这种情况,那么存储桶上的“公共访问权限”到底能做什么?
答案 0 :(得分:1)
S3访问权限是一个混乱的事情,主要是因为要理解三种“类型”。
可以在文档中找到权限模型(存储桶访问权限,控制列表和策略)的完整讨论(请参阅:Setting Bucket and Object Access Permissions - Amazon Simple Storage Service)。但是您已经注意到:
桶和对象权限彼此独立。对象不会从其存储桶中继承权限。例如,如果您创建存储桶并向用户授予写访问权限,则除非该用户明确授予您访问权限,否则您将无法访问该用户的对象。
“公共访问权限”是指“您帐户外部的用户没有IAM或S3 ACL访问权限”。
与所有存储桶访问权限一样,可以为存储桶操作(允许任何人列出对象/允许任何人创建存储桶中的对象;对访问控制列表执行相同操作)和单个对象(读/写/等)
n.b。如果您是因为要使S3存储桶可公开访问而提出此要求,请参见in this answer。请尽量不要成为新闻中的下一家开放式S3存储桶公司!
答案 1 :(得分:0)
向Amazon S3存储桶或存储桶的一部分授予公共访问权的最佳方法是使用Bucket Policy。这比为每个对象授予公共访问权限要容易。
以下是一项授予公众对整个存储桶的访问权限的政策:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}