2012-10-16 54 views
10

我正在编写授予READ权限的代码,使用aws-sdk gem。在创业板的文档,我发现:Ruby aws-sdk - 将权限授予所有用户

bucket.objects.each do |object| 
    puts object.key 
    acl = object.acl 
    acl.grant(:read).to("TODO: how can I specify 'ALL'???") 
    object.acl = acl.to_xml 
end 

这一切都有道理,但我不是很肯定,我怎么能告诉批读取权限ALL用户?

回答

28

您拥有的示例可以工作,但更适合复杂的ACL(访问控制列表)。 Amazon S3有许多可用于对象的canned-acls。以下代码片段将更新存储桶中所有对象的ACL,以便任何人都可以阅读它们。

bucket.objects.each{|obj| obj.acl = :public_read } 

或者,您可以在上传(或复制)对象时设置对象的ACL。

# upload a file and set the acl so the world can download it 
obj = bucket.objects['object-key'].write(file, :acl => :public_read) 

puts obj.public_url 
#=> 'https://..."