2011-09-18 557 views
3

我有一个网站,允许用户搜索音乐曲目并将他们选择的歌曲下载为mp3。允许用户从AWS s3或Cloudfront批量下载文件

我有我的服务器上的网站和s3上的所有mp3,然后通过cloudfront发布。到现在为止还挺好。

客户端现在希望用户能够选择多个音乐曲目,然后将它们全部批量下载或批量下载,而不是一次下载1个。

通常我会将所有文件放入一个zip文件中,然后向用户提供一个指向该新zip文件的链接以供下载。在这种情况下,由于文件在s3上,需要我首先将所有文件从s3复制到我的网络服务器,然后将它们处理成zip文件,然后从我的服务器上下载。

是否有无论如何我可以创建一个压缩s3或CF或有一些批量/组文件到一个zip?

也许我可以设置一个EC2实例来处理这个问题?

我会非常感谢一些方向。

最佳

+0

我面对完全相同的情况,请让我知道你是如何处理这种情况?谢谢... – Siva

+0

多线程是答案 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html –

回答

1

恐怕你将无法创建批次W/O额外的处理。启动一个EC2实例可能是一个选项,可以为每个用户创建一个批次

1

我面临的是确切的同样的问题。到目前为止,我能找到的唯一的事情就是亚马逊的s3sync工具:

https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

就我而言,我使用Rails +的回形针插件,这意味着我已经没有办法能够轻松下载所有用户的图像一次去,因为这些文件分散在很多子目录中。

但是,如果您可以将您的用户以更好的方式文件,这样说:

/users/<ID>/images/... 
/users/<ID>/songs/... 

...等,那么你就可以解决您的问题,可以立即:

aws s3 sync s3://<your_bucket_name>/users/<user_id>/songs /cache/<user_id> 

请记住,您必须为您的服务器提供正确的凭据,以便S3 CLI工具无需提示用户名/密码即可运行。

而这应该排序你。

附加这里讨论: Downloading an entire S3 bucket?