AmazonS3からダウンロード
download-awss3.rb
#!/usr/bin/env ruby require 'rubygems' require 'aws/s3' if ARGV.size < 1 puts 'ruby download-awss3.rb bucketname' puts 'ruby download-awss3.rb bucketname prefix' exit 1 end AWS::S3::Base.establish_connection!(:access_key_id => "your-access-key-id", :secret_access_key => "your-secret-access-key") bucket_name = ARGV.shift file_prefix = ARGV.shift if ARGV.size > 0 tmpdir = 'tmpdir' Dir.mkdir(tmpdir) if !File.exists?(tmpdir) objs = AWS::S3::Bucket.objects(bucket_name, :prefix => file_prefix) i = 0 objs.each{|obj| print "#{obj.path} (#{i}/#{objs.size})" filename = obj.path.split('/').last open(out_filename="#{tmpdir}/#{filename}", 'w'){|f| f.write obj.value puts " => #{out_filename}" } i+=1 }
ruby download-awss3.rb bucket名 keyのprefix
でまとめてダウンロード。
s3はbucketを作ってその中がKVSになっている。valueとして巨大なファイルを置いておける。
keyは Buckets.objectsでprefix等で検索できる http://amazon.rubyforge.org/doc/classes/AWS/S3/Bucket.html#M000069
AWS::S3::Bucket.objects(bucket_name, :prefix => file_prefix)
でAWS::S3::S3Objectの配列が返ってくる。
たとえばbucket内にディレクトリhogeを作ってその中にたくさんファイルがあったら、keyのprefixにhoge/を指定すればhoge/をprefixに持つS3Objectインスタンスが全て手に入る
keyが正確にわかっている場合はS3Object.findで直接取ればいい http://amazon.rubyforge.org/doc/classes/AWS/S3/S3Object.html#M000038
establish_connectしてから
open("tmpdir/result.png", 'w'){|f| f.write AWS::S3::S3Object.find("key", "bucket名").value }
でファイルに保存。