有没有办法从S3使用了红宝石的宝石AWS-S3下载文件?红宝石、没有办法、使用了、文件

2023-09-11 23:46:37 作者:血染彼岸花

好了,所以我尝试了两种方法均失败。

Ok so i tried two methods both failed

使用 AWS-S3 创业板第一种方法

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")
 => #<AWS::S3::Bucket:0x007fea3e2898c8 @attributes={"xmlns"=>"http://s3.amazonaws.com/doc/2006-03-01/", "name"=>"test_bucket", "prefix"=>nil, "marker"=>nil, "max_keys"=>1000, "is_truncated"=>true}, @object_cache=[#<AWS::S3::S3Object:0x70322020960960 '/test_bucket/00000188110119_1000000731213/'>, #<AWS::S3::S3Object:0x70322020960660 '/test_bucket/00000188110119_1000000731213/10_08-52-08.mp3'>, #<AWS::S3::S3Object:0x703220209

bucket.size
 => 1000 

bucket.objects[0]
 => #<AWS::S3::S3Object:0x70322028046080 '/test_bucket/00000188110119_1000000731213/'> 
bucket.objects[1]
 => #<AWS::S3::S3Object:0x70322028046040 '/test_bucket/00000188110119_1000000731213/10_08-52-08.mp3'> 
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

更新

bucket.objects[1]
 => #<AWS::S3::S3Object:0x70322028046040 '/test_bucket/00000188110119_1000000731213/10_08-52-08.mp3'> 
bucket.objects[1].read
 NoMethodError: undefined method `read' for #<AWS::S3::S3Object:0x70322028046040>
bucket.objects[1].class
 => AWS::S3::S3Object 

正如你可以看到什么,我试图做的是从S3存储复制的MP3,并将其复制到本地计算机....如何做到这一点的任何想法

As you can see what i am trying to do is copy the mp3 from the s3 bucket and copy it to the local computer....any ideas on how to do this

推荐答案

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

基本上,你必须使用写S3对象的方法。

Basically you have to use the read and write methods on S3 objects.

所以:

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