开发者

Is it possible to monitor Amazon S3 resource usage via a Ruby on Rails app?

Let say, I have a web application that allows users to upload images and documents and my application stores all those assets on S3, is there a way I can monitor resource usage PER user account?

For example, if a user account has a 1GB storage limit, how can I monitor how much of that allowance any indi开发者_运维问答vidual is using?

Furthermore (but this is less of an issue to me) if that user account also has a 5GB bandwidth limit, are there any tools available that allow me to monitor just their S3 bandwidth?


Yes, this is possible. You can use papreclip to manage file uploads (or any other reputable upload management plugin/gem). Most of these tools give you access to the filesize of the uploaded file. You can simply store these files in the database along with the asset_uri (which I imagine you're already storing), and to check if a user can upload another file, simply sum all the sizes of all assets with the appropriate user_id.

Users:
  id
  email_address
  first_name
  upload_limit

Assets:
  id
  user_id
  uri
  filesize
  filename

Then, to grab the total size of uploaded files by a particular user, you could do:

class User < ActiveRecord::Base
  has_many :assets

  #Check if the user can upload another file
  def can_upload?
    if Asset.sum('filesize', :conditions => 'user_id = #{self.id}') >= self.upload_limit
      return false
    else
      return true
    end
  end

  #See the user's used storage space
  def used_storage
    return Asset.sum('filesize', :conditions => 'user_id = #{self.id}')
  end

  #See how much space the user has remaining
  def available_storage
    if self.can_upload?
      return self.upload_limit - Asset.sum('filesize', :conditions => 'user_id = #{self.id}')
    else
      return 0
    end
  end
end

You can see I'm making use of the ActiveRecord sum function here to do the calculation. You could just as easily use a map or some other ruby based solution.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜