是否有可能执行批量上传到亚马逊S3?

亚马逊S3支持批量上传吗? 我有一份工作,需要上传每个晚上~100K的文件,可以达到1G,但强烈倾向于小文件(90%小于100字节,99%小于1000字节长)。

s3 API是否支持在单个HTTP调用中上传多个对象?

所有对象必须在S3中作为单独的对象可用。 我不能在任何其他地方(FTP等)或其他格式(数据库,EC2本地驱动器等)托pipe他们。 这是我无法改变的外部要求。

s3 API是否支持在单个HTTP调用中上传多个对象?

不, S3 PUT操作只支持每个HTTP请求上传一个对象。

您可以在要与远程存储桶同步的计算机上安装S3 Tools ,然后运行以下命令:

s3cmd sync localdirectory s3://bucket/ 

然后,您可以将此命令放在脚本中,并创build一个计划作业,以便每晚运行此命令。

这应该做你想要的。

该工具基于MD5散列和文件大小执行文件同步,因此碰撞应该很less(如果您真的希望只使用“s3cmd put”命令来强制盲目覆盖目标存储桶中的对象)。

编辑:另外请确保您阅读我为S3工具链接的网站上的文档 – 有不同的标志是否需要本地删除的文件从桶中删除或忽略等

或者,您可以使用sync命令通过AWS CLI工具上传S3。

aws s3 sync local_folder s3:// bucket-name

您可以使用此方法批量上传文件到S3非常快。

一个文件(或文件的一部分)=一个HTTP请求,但是Java API现在支持高效的多file upload,而无需自己编写multithreading,通过使用TransferManager