I experimented with S3 and they have this cool feature where you can set the ACL on the contents of the bucket using the bucket policy. So, for example, you can have a bunch of files with the actual ACL in the file set to private, but the file becomes available to certain users / IP addresses / referrers through an overriding policy.
In my case, I have a bunch of personal content in a bucket, but I want to make the files in a specific directory accessible to my site (for example, images). So I have something like this:
{ "Version": "2008-10-17", "Id": "", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::content-racket-fm/uploaded/images/*" } ] }
Now we have some experience that I can solve. I recently found out here:
https://forums.aws.amazon.com/thread.jspa?threadID=78294
These bucket policies work only for files that are owned by the bucket owner. So, for example, if the files got into the bucket through some external service, for example encoding.com or panda, where they have their own user in your S3 bucket, you will have problems because your bucket policy will not apply to these files (this looks like amazon surveillance in my opinion, but I'm sure there is a good reason I didn't think about)
I use rails, there is a way to set the owner of an object in a bucket.
Edit
I think the best question might be ...
Is there a way to configure the Amazon bucket so that it applies the bucket policy to all files, regardless of owner.