Je stocke deux millions de fichiers dans un compartiment Amazon S3. Il y a une racine donnée (l1) ci-dessous, une liste de répertoires sous l1 et ensuite chaque répertoire contient des fichiers. Donc, mon seau ressemblera à quelque chose comme ce qui suitRépertorier des répertoires à un niveau donné dans Amazon S3
l1/a1/file1-1.jpg
l1/a1/file1-2.jpg
l1/a1/... another 500 files
l1/a2/file2-1.jpg
l1/a2/file2-2.jpg
l1/a2/... another 500 files
....
l1/a5000/file5000-1.jpg
Je voudrais à la liste le plus rapidement possible les deuxièmes entrées de niveau, donc je voudrais obtenir a1, a2, A5000. Je ne veux pas énumérer toutes les clés, cela prendra beaucoup plus de temps.
Je suis ouvert à utiliser directement le AWS api, mais je l'ai joué jusqu'à présent avec le joyau de right_aws en rubis http://rdoc.info/projects/rightscale/right_aws
Il y a au moins deux API dans ce petit bijou, j'essayé d'utiliser bucket.keys() dans le module S3 et incrementally_list_bucket() dans le module S3Interface. Je peux définir le préfixe et le délimiteur pour lister tout l1/a1/*, par exemple, mais je ne peux pas comprendre comment lister seulement le premier niveau dans l1. Il y a une entrée: common_prefixes dans le hash retourné par incrementally_list_bucket() mais dans mon exemple de test il n'est pas renseigné.
Cette opération est-elle possible avec l'API S3?
Merci!
Vérifiez la documentation S3 pour l'opération de ListBucket: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html? SOAPListBucket.html. Pour obtenir a1-a5000, spécifiez prefix = "/ l1 /" delimeter = "/". Pour obtenir/l1/a123/*, spécifiez prefix = "/ l1/a123 /", delimeter = "/". Est-ce ce que tu avais en tête? –
Oren, Vous avez raison, cela fonctionne actuellement. Merci beaucoup. La structure de seau de test que j'ai créée était peut-être incorrecte. –