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