2011-09-18 2 views
3

J'ai un site Web qui permet aux utilisateurs de rechercher des morceaux de musique et de télécharger ceux qu'ils ont sélectionnés en tant que mp3.Autoriser les utilisateurs à télécharger des fichiers en tant que lot à partir d'AWS s3 ou Cloudfront

J'ai le site sur mon serveur et tous les mp3 sur s3 et ensuite distribué via cloudfront. Jusqu'ici tout va bien.

Le client souhaite maintenant que les utilisateurs puissent sélectionner un nombre de pistes musicales, puis les télécharger toutes en masse ou par lot au lieu de 1 à la fois.

Habituellement, je place tous les fichiers dans un fichier zip, puis je présente à l'utilisateur un lien vers ce nouveau fichier zip à télécharger. Dans ce cas, comme les fichiers sont sur s3, il faudrait d'abord copier tous les fichiers de s3 sur mon serveur web, les traiter dans un zip et ensuite télécharger depuis mon serveur.

Y at-il de toute façon que je peux créer un zip sur s3 ou CF ou y a-t-il des fichiers batch/groupés dans un zip?

Peut-être que je pourrais mettre en place une instance EC2 pour gérer cela?

J'apprécierais grandement la direction.

Meilleur

Joe

+0

Je suis confronté exactement au même scénario, s'il vous plaît laissez-moi savoir comment vous avez géré ce scénario? merci ... – Siva

+0

multi-threads est la réponse http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html –

Répondre

1

Je crains que vous ne serez pas en mesure de créer les lots w/o un traitement supplémentaire. allumage d'une instance EC2 pourrait être une option pour créer un lot par utilisateur

1

Je suis face à la exacte même problème. Jusqu'à présent, la seule chose que j'ai pu trouver est un outil s3sync d'Amazon:

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

Dans mon cas, j'utilise Rails + son addon Paperclip ce qui signifie que je n'ai aucun moyen de télécharger facilement tous de l'utilisateur images en une seule fois, car les fichiers sont dispersés dans beaucoup de sous-répertoires.

Cependant, si vous pouvez regrouper vos les fichiers de l'utilisateur dans une meilleure façon, par exemple comme ceci:.

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

... etc, alors vous pouvez résoudre votre problème tout de suite avec:

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

N'oubliez pas que vous devrez donner à votre serveur les informations d'identification appropriées afin que les outils S3 CLI puissent fonctionner sans demander d'identifiants/mots de passe.

Et cela devrait vous trier.

discussion supplémentaires ici: Downloading an entire S3 bucket?

Questions connexes