【发布时间】:2016-10-18 18:57:30
【问题描述】:
在 Rails 中,使用 aws-sdk gem(比如 5k 个文件),将托管在 S3(不是我的帐户)上的公共文件列表复制到我的私人存储桶中的最简单方法是什么?我想保留相同的文件和路径名。
例子:
http://target.com.s3.amazonaws.com/assets/videos/abc123.mp4 (public)
http://myexample.com.s3.amazonaws.com/assets/videos/abc123.mp4 (private)
我想将文件读入内存并直接流入 S3。我的托管服务提供商 (Heroku) 没有磁盘空间。这些文件是 MP4,大小约为 3-4MB。
这是我的方法(未经测试):
vid_file = 'http://example.com.s3.amazonaws.com/assets/videos/abc123.mp4'
vid_response = HTTParty.get(vid_file)
if vid_response.code == 200
filename = File.basename(vid_file) # TOOD - fix to include s3 folder before object filename
s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
obj = s3.bucket(ENV['S3_BUCKET']).object(filename)
obj.put(body: vid_response.body)
end
但是,尽管我没有第一个存储桶的密钥(但对象是公共的),但开发工具包是否可以指示 AWS 在 S3 存储桶之间执行内部复制?如果不是,我的上述方法是否正确(流入内存,发布到 S3)?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 amazon-s3