加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

验证Ruby中S3对象的权限

发布时间:2020-12-17 02:15:30 所属栏目:百科 来源:网络整理
导读:我正在使用 aws-sdk for Ruby来管理S3上的对象.我可以通过设置授予公共读取权限 object.acl = :public_read 有没有办法确定在执行此操作之前是否已授予对象公共读取权限? 解决方法 Ruby aws-sdk文档很差,我也无法找到它.下面是我创建的一个函数,用于检查文
我正在使用 aws-sdk for 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 gem 1.3.5版.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读