如何批量上传到s3?

时间:2009-03-20 18:55:16

标签: upload amazon-s3 performance bulk

我最近重构了一些代码,使用“加载数据”将行填充到数据库中,并且效果很好 - 但是对于每条记录,我必须将2个文件上传到s3 - 这完全破坏了宏伟的速度升级我正在获得。虽然我能够处理600多个这些文件/秒,但由于s3,它们现在以1 /秒的速度流入。

你有什么办法解决这个问题?看看API,我发现它主要是RESTful所以我不知道该怎么做 - 也许我应该把所有这些都放在数据库中。文本文件通常不超过1.5k。 (我们填充的另一个文件是文本的xml表示)

我已经将这些文件缓存在我的Web服务器的HTTP请求中,因为它们被大量使用。

btw:我们当前的实现使用java;我还没有尝试过线程,但这可能是一个选项

建议?

2 个答案:

答案 0 :(得分:6)

您可以使用JetS3t的[putObjects] [1]功能一次上传多个文件。

或者,您可以使用后台线程从队列上传到S3,并将代码中的文件添加到队列中,将数据加载到数据库中。

[1]:http://jets3t.s3.amazonaws.com/api/org/jets3t/service/multithread/S3ServiceMulti.html#putObjects(org.jets3t.service.model.S3Bucket,org.jets3t.service.model.S3Object [])

答案 1 :(得分:0)

我刚刚找到一个很好的解决方案,用 php

上传整个目录
$client->uploadDirectory(
  SOURCE_FOLDER,
  YOUR_BUCKET_NAME,
  DESTINATION,
  array(
    'concurrency' => 5,
    'debug'          => TRUE,
    'force'            => FALSE,
    'params'        => array(
      'ServerSideEncryption' => 'AES256',
    ),
  )
);