0

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

s3cmd put file.jpg s3://my-bucket

而且我想在 my-bucket 中有 file.jpg 以供公众访问。

4

1 回答 1

0

您的意思是“公共访问”是“对象是匿名可读的”吗?我将继续假设这是真的。

因为 ACL 是按桶或按对象的,所以桶策略将更适合用例。创建存储桶后my-bucket,可以通过 PUT Bucket Policy API [1] 设置特定的存储桶策略。

允许公共访问存储桶的示例策略 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

于 2015-08-08T13:46:33.373 回答