4
我使用aws-sdk for Ruby来管理S3上的对象。我通过设置在Ruby中验证S3对象的权限
object.acl = :public_read
有没有一种方法,以确定是否已经有这样做之前授予对象公开读取的权限是可以授予公共读取权限?
我使用aws-sdk for Ruby来管理S3上的对象。我通过设置在Ruby中验证S3对象的权限
object.acl = :public_read
有没有一种方法,以确定是否已经有这样做之前授予对象公开读取的权限是可以授予公共读取权限?
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。
谢谢,我明白了。 – iltempo 2013-03-20 23:08:11