Riak CS public 新对象的默认 ACL

Riak CS public ACL by default for new objects

是否可以让 Riak CS 在创建新存储桶或某个存储桶中的文件时默认应用具有 public 访问权限的 ACL?我的意思是我想简单地使用

来放置文件
s3cmd put file.jpg s3://my-bucket

而且我希望 file.jpg 在我的存储桶中 public 可访问。

你的意思是 "objects are anonymously readable" 通过“public access”?我会继续假设它是真的。

因为ACL是per bucket或者per object的,bucket policy会比较多 适用于用例。创建存储桶 my-bucket 后,一个 可以通过 PUT Bucket Policy API [1].

设置特定的桶策略

允许 public 访问存储桶的示例策略 JSON 如下所示:

{
    "Version": "2008-10-17",
    "Id": "Policy1355283297687",
    "Statement": [
        {
            "Sid": "Stmt1355283289",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Principal": { "AWS": ["*"] }
        }
    ]
}

然后你可以用适当的 URL 作为 API doc [1] 以任何方式放置它, 一种简单的方法是使用 s3cmd 作为

s3cmd setpolicy </path/to/above/json/as/file> s3://my-bucket

那么写在桶下的每个对象都可以被任何用户访问 包括匿名的。

很遗憾,无法在创建时应用此类存储桶策略 桶,但我希望编写包装脚本并不难 创建存储桶并对其应用策略。

[1] http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html