繁体   English   中英

在Ruby中验证对S3对象的权限

[英]Verifying permissions on S3 object in Ruby

我在Ruby上使用aws-sdk来管理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 gem版本1.3.5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM