我目前正在开发一款rails应用程序,旨在将视频从一个s3存储桶复制/移动到另一个存储桶。然而,在我的rails应用程序中,我不断收到代理错误502。在mongrel日志中,它说“无法分配内存”。一旦发生此错误,应用程序就会停止运行,我们必须重新启动。
我目前正在开发一款rails应用程序,旨在将视频从一个s3存储桶复制/移动到另一个存储桶。然而,在我的rails应用程序中,我不断收到代理错误502。在mongrel日志中,它说“无法分配内存”。一旦发生此错误,应用程序就会停止运行,我们必须重新启动。
# With s3 being an S3 object acquired via S3Interface.new
# Copies key1 from bucket b1 to key1_copy in bucket b2:
s3.copy('b1', 'key1', 'b2', 'key1_copy')
如果你正在使用裸露的S3 HTTP接口,请查看亚马逊对象复制文档,以了解仅使用HTTP从一个存储桶复制一个对象到另一个存储桶的解决方案。
尝试流式传输文件,而不是将整个文件加载到内存中,然后再处理它。
例如,如果您正在使用aws-s3 gem,请不要使用:
data = open(file)
S3Object.store file_name, data, BUCKET
S3Object.store file_name, open(file), BUCKET
不确定如何“流式下载”文件。
你可以使用 fog gem 直接将 bucket 复制到另一个 bucket。
s3 = Fog::Storage.new(your_aws_credentials)
s3.copy_object('source-bucket', 'source/path', 'dest-bucket', 'dest/path')