有没有办法使用ruby gem aws-s3从s3下载文件?

好的,所以我尝试了两种方法都失败了

使用aws-s3 gem的第一种方法

require 'aws/s3' S3ID = "MYACCESS" S3KEY = "MYKEY" include AWS::S3 AWS::S3::Base.establish_connection!( :access_key_id => S3ID, :secret_access_key => S3KEY ) bucket = AWS::S3::Bucket.find("test_bucket") => #"http://s3.amazonaws.com/doc/2006-03-01/", "name"=>"test_bucket", "prefix"=>nil, "marker"=>nil, "max_keys"=>1000, "is_truncated"=>true}, @object_cache=[#, #, # 1000 bucket.objects[0] => # bucket.objects[1] => # bucket.objects[1].key => "00000188110119_1000000731213/10_08-52-08.mp3" File.open("/Users/matt/local_copy.mp3", "w") do |f| f.write(bucket.objects[1]) end 

UPDATE

 bucket.objects[1] => # bucket.objects[1].read NoMethodError: undefined method `read' for # bucket.objects[1].class => AWS::S3::S3Object 

你可以看到我想要做的是从s3桶中复制mp3并将其复制到本地计算机….任何关于如何做到这一点的想法

请参阅: http : //docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html

基本上你必须在S3对象上使用write方法。

所以:

 File.open("/Users/matt/local_copy.mp3", "w") do |f| f.write(bucket.objects[1].read) end 

如果您没有被迫使用gem’aws-s3’,您可能需要检查fog ,这基本上是相同的事情,只有它与后端无关(aws,rackspace,..),似乎是更活跃。 在本页底部有一个示例显示您想要实现的目标