S3 library provides access to Amazon’s Simple Storage Service.
It supports both: European and US buckets through the REST API.
geminstalls3
require"s3"service = S3::Service.new(:access_key_id=>"...", :secret_access_key=>"...") #=> #<S3::Service:...>
service.buckets#=> [#<S3::Bucket:first-bucket>,# #<S3::Bucket:second-bucket>]
first_bucket = service.buckets.find("first-bucket") #=> #<S3::Bucket:first-bucket>
new_bucket = service.buckets.build("newbucketname") new_bucket.save(:location=>:eu)
Remember that bucket name for EU can’t include “_” (underscore).
Please refer to: docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html for more information about bucket name restrictions.
first_bucket.objects#=> [#<S3::Object:/first-bucket/lenna.png>,# #<S3::Object:/first-bucket/lenna_mini.png>]
object = first_bucket.objects.find("lenna.png") #=> #<S3::Object:/first-bucket/lenna.png>
object.content_type#=> "image/png"
object.content#=> "\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00..."
object.destroy#=> true
new_object = bucket.objects.build("bender.png") #=> #<S3::Object:/synergy-staging/bender.png>new_object.content = open("bender.png") new_object.save#=> true
Please note that new objects are created with “public-read” ACL by default.
object = bucket.objects.find('lenna.png') object.request_acl# or bucket.request_acl
This will return hash with all users/groups and theirs permissions
object = bucket.objects.find("lenna.png") object.copy(:key=>"lenna.png", :bucket=>bucket, :acl=>:private)
To do that you just send file using proper form direct to amazon. You can create simple halper for that, for example like this one: https://gist.github.com/3169039
Copyright © 2009 Jakub Kuźma, Mirosław Boruta. See LICENSE for details.