Upload
martins
View
5.397
Download
2
Embed Size (px)
DESCRIPTION
A quick overview of AmazonS3 and how you can use it with rails
Citation preview
What is it?
"Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers."
S3 = Simple Storage System
Write, read, delete from 1B to 5GB
US & European storage
Authentication built-in
REST and SOAP interfaces
HTTP & BitTorrent protocols supported
Features
Why use it?
Simple
Reliable 99.99%
Fast
Inexpensive
Scalable
CDN
Basic Concepts
Bucket - the storage container (max 100 / dev) - must be unique across whole S3 service
Object - data + metadata (custom + some standard)
Key - unique identifier of an object in a bucket
Using S3 with Rails
Signup at Amazon
Install AWS::S3 gem
Install attachment_fu plugin
config/amazons3.ymldevelopment: bucket_name: reading_eggs_development access_key_id: my_access_key secret_access_key: my_secret_key
test: bucket_name: reading_eggs_test access_key_id: my_access_key secret_access_key: my_secret_key
prod: etc.....
attachment_fu
before:
has_attachment :content_type => 'application/x-shockwave-flash', :storage => :file_system, :path_prefix => 'path/to/files/', :max_size => 10.megabytes
attachment_fu
after:
has_attachment :content_type => 'application/x-shockwave-flash', :storage => :s3, :max_size => 10.megabytes
attachment_fuaccess:
>> p = PartFile.find(:first)=> #<PartFile:0x23a0eb0 @attributes={"content_type"=>"application/x-shockwave-flash", "size"=>"4434939", "id"=>"315", "filename"=>"I_and_a.swf"}>> p.public_filename=> "http://s3.amazonaws.com/reading_eggs_dev/part_files/315/I_and_a.swf">> p.full_filename=> "part_files/315/I_and_a.swf">> p.bucket_name=> "reading_eggs_dev"
PricingStorage$0.15 per GB-Month of storage used
Data Transfer$0.10 per GB - all data transfer in$0.18 per GB - first 10 TB / month data transfer out$0.16 per GB - next 40 TB / month data transfer out$0.13 per GB - data transfer out / month over 50 TB
Requests$0.01 per 1,000 PUT or LIST requests$0.01 per 10,000 GET and all other requests** No charge for delete requests
Sample Costings
1 GB Storage = $0.15
5000 Users
200 MB / User / Month
0.2 GB * 5000 = 1000GB * $0.18 = $180
Request = 200/User/Month = 5000 * 200 = 1M get requests
1000000/10000 = 100 * $0.01 = $1
Data Storage Costs
Request Costs
Bandwidth Costs
1GB/M $0.15
US$181.15Total Cost
ResourcesAmazon S3 : http://aws.amazon.com/s3
AWS::S3 gem : http://amazon.rubyforge.org/
s3fox : http://www.rjonna.com/ext/s3fox.php
s3 calc : http://calculator.s3.amazonaws.com