gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:23 27 4
gpt4 key购买 nike

我正在使用 aws-sdk for Ruby管理 S3 上的对象。我可以通过设置授予公共(public)读取权限

object.acl = :public_read

有没有办法在这样做之前确定是否已经向对象授予了公共(public)读取权限?

最佳答案

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

其中对象是任何 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。

关于ruby - 在 Ruby 中验证对 S3 对象的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15213948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com