S3 Bulk putObject

时间:2013-04-26 00:24:58

标签: java amazon-s3 amazon-ec2

我正在分析我的Java分布式爬虫(在S3中存储已爬网的文件),S3插入肯定是一个瓶颈。事实上,在足够多的线程中,线程将始终从S3获得超时异常,因为S3需要很长时间才能读取数据。是否有亚马逊或其他图书馆提供的批量putObject功能可以更有效地执行此操作?

示例代码:

BUCKET = ...; // S3 bucket definition
AmazonS3 client= ...;

InputStream is = ...; // convert the data into input stream
ObjectMetadata meta = ...; // get metadata
String key = ...;

client.putObject(new PutObjectRequest(BUCKET, key, is, meta));

1 个答案:

答案 0 :(得分:1)

我没有将S3与java一起使用,但AWS确实支持大文件的多部分上传。

http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html

Python的boto库确实支持这一点。我之前用它来成功上传非常大的数据库备份。

在查看java库的javadoc之后,我认为您可能需要使用http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/UploadPartRequest.html而不是常规请求,并且可以进行分段上传。