Ruby用のaws-sdkを使用してS3上のオブジェクトを管理しています。設定することで、パブリック読み取り権限を付与できます
object.acl = :public_read
それを行う前に、オブジェクトに既にパブリック読み取り許可が付与されているかどうかを判断する方法はありますか?
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-sdkgemバージョン1.3.5で機能します。