我一直在试验 S3,他们有这个很酷的功能,您可以通过存储桶策略在存储桶的内容上设置 ACL。因此,例如,您可以将文件上的实际 ACL 设置为私有的一堆文件,但该文件通过覆盖策略对某些用户/IP 地址/引用者可用。
就我而言,我在一个存储桶中有一堆私有内容,但我想让特定目录中的文件对我的站点可用(例如图像)。所以我有这样的事情:
{
"Version": "2008-10-17",
"Id": "",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::content-racket-fm/uploaded/images/*"
}
]
}
现在我们有了一些背景,我可以回答这个问题。我最近在这里发现:
https://forums.aws.amazon.com/thread.jspa?threadID=78294
该存储桶策略仅适用于存储桶所有者拥有的文件。因此,例如,如果文件通过某种外部服务(如 encoding.com 或 panda 流)在您的 S3 存储桶上拥有自己的用户,那么您将遇到问题,因为您的存储桶策略不会应用于这些文件(在我看来,这似乎是亚马逊的疏忽,但我确信我没有想到有充分的理由)
我正在使用rails,有没有办法在桶中设置对象的所有者。
编辑
我想一个更好的问题可能是......
有没有办法设置亚马逊存储桶,以便它将存储桶策略应用于所有文件,而不管所有者如何。