我们需要将视频文件存储移至AWS S3。旧位置是CDN,因此我只有每个文件的网址(1000多个文件,文件总大小> 1TB)。不能直接在存储服务器上运行上传工具。
我已经创建了一个工具,可以下载文件,将文件上传到S3存储桶并使用新的HTTP URL更新数据库记录,并且除了可以永久使用之外,它可以完美运行。
下载文件需要花费一些时间(考虑每个文件接近1 GB),而上传则需要更长的时间。
是否可以将视频文件直接从cdn上传到S3,所以我可以将处理时间减少一半?类似于读取文件块,然后在读取下一个块时将其放入S3。
目前,我使用System.Net.WebClient下载文件,并使用AWSSDK上传。
PS:我的互联网速度没有问题,我在具有1GBit网络连接的服务器上运行该应用程序。
这个问题已经由我回答了,这是要点:
obj = Aws::S3::Object.new(bucket_name: 'target-bucket', key: 'target-key')
obj.upload_stream do |write_stream|
IO.copy_stream(URI.open('http://example.com/file.ext'), write_stream))
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句