【发布时间】:2015-10-29 11:04:21
【问题描述】:
是否可以在创建新存储桶或某个存储桶中的文件时,让 Riak CS 默认应用具有公共访问权限的 ACL?我的意思是我想简单地使用例如文件
s3cmd put file.jpg s3://my-bucket
我希望我的存储桶中的 file.jpg 可供公众访问。
【问题讨论】:
是否可以在创建新存储桶或某个存储桶中的文件时,让 Riak CS 默认应用具有公共访问权限的 ACL?我的意思是我想简单地使用例如文件
s3cmd put file.jpg s3://my-bucket
我希望我的存储桶中的 file.jpg 可供公众访问。
【问题讨论】:
你的意思是“对象是匿名可读的”由“公共 访问”?我将继续假设它是真的。
因为 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 文档 [1] 将其放入,
一个简单的方法是使用s3cmd as
s3cmd setpolicy </path/to/above/json/as/file> s3://my-bucket
那么写在bucket下的每个object都可以被任何用户访问 包括匿名的。
不幸的是,没有办法在创建时应用这样的存储桶策略 桶,但我希望,编写包装脚本并不难 创建存储桶并对其应用策略。
[1]http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html
【讨论】: