2013-03-05 39 views

回答

2

Ruby aws-sdk的文档很差,我也无法找到它。下面是我创建的一个函数,用于检查文件是否具有读取权限。修改它按您的需求:

def check_if_public_read(object) 
    object.acl.grants.each do |grant| 
     begin 
     if(grant.grantee.uri == "http://acs.amazonaws.com/groups/global/AllUsers") 
      return true if ([:read, :full_control].include?(grant.permission.name)) 
     end 
     rescue 
     end 
    end 
    return false 
    end 

object是任何S3对象:

AWS.config(
    :access_key_id  => "access key", 
    :secret_access_key => "secret key" 
) 
    s3 = AWS::S3.new 

file = s3.buckets["my_bucket"].objects["path/to/file.png"] 

check_if_public_read(file) => true 

请注意,我已经想通了这一点看的对象和AWS-SDK源代码,和URI参数可能随时间而改变。现在这个工作,并为aws-sdk宝石版本1.3.5。

+0

谢谢,我明白了。 – iltempo 2013-03-20 23:08:11