使用Ruby (aws:s3)将大文件上传到S3 - 在Ubuntu上由同行重置连接

3

我正在尝试使用ruby aws:s3将一些大文件存储在S3上,使用以下代码:

S3Object.store("video.mp4", open(file), 'bucket', :access => :public_read)

对于大约100 MB的文件,一切都很好,但对于超过200 MB的文件,日志中会出现“连接被对等方重置”的错误。是否有人遇到过这种奇怪的问题?从网络上看,这似乎是一个与大文件有关的问题,但我还没有找到一个确定的解决方案。我正在使用Ubuntu。
编辑:据此处所建议,这似乎是一个Linux问题。
1个回答

0

不知道原始问题可能在哪里,但作为解决方法,您可以尝试使用多部分上传。

filename = "video.mp4"
min_chunk_size = 5 * 1024 * 1024  # S3 minimum chunk size (5Mb)
    @object.multipart_upload do |upload|
      io = File.open(filename)

      parts = []

      bufsize = (io.size > 2 * min_chunk_size) ? min_chunk_size : io.size
      while buf = io.read(bufsize)
        md5 = Digest::MD5.base64digest(buf)

        part = upload.add_part(buf)
        parts << part

        if (io.size - (io.pos + bufsize)) < bufsize
          bufsize = (io.size - io.pos) if (io.size - io.pos) > 0
        end
      end

      upload.complete(parts)
    end

S3的分段上传有点棘手,因为每个部分的大小必须超过5Mb,但是上面的代码已经处理好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接