J'ai un seau avec des milliers de fichiers. Comment puis-je chercher le seau? Est-il un outil que vous pouvez recommander? Merci.
Réponses
Trop de publicités?Juste une remarque à ajouter ici: il est maintenant 3 ans plus tard, pourtant, ce post est top dans Google quand vous tapez "Comment rechercher un compartiment S3."
Peut-être vous cherchez quelque chose de plus complexe, mais si vous avez atterri ici, à essayer de comprendre comment tout simplement de trouver un objet (fichier) par son titre, c'est fou simple:
ouvrir le seau, sélectionnez "none" sur le côté droit, et de commencer à taper le nom de fichier.
http://docs.aws.amazon.com/AmazonS3/latest/UG/ListingObjectsinaBucket.html
S3 n'a pas une native de la recherche "de ce seau" depuis le contenu réel est inconnu - aussi, depuis le S3 est la clé/valeur de base il n'est pas natif moyen d'accéder à de nombreux nœuds à la fois ala plus traditionnel des banques de données qui offrent un (SELECT * FROM ... WHERE ...)
(dans un modèle SQL).
Ce que vous devez faire est d'exécuter ListBucket
pour obtenir une liste d'objets dans le seau, puis itérer sur chaque élément de l'exécution d'une opération personnalisée que vous mettre en œuvre - qui est votre recherche.
Il y a (au moins) deux différents cas d'utilisation qui pourrait être décrite comme "chercher le seau":
La recherche de quelque chose à l'intérieur de chaque objet stocké dans le seau; cela suppose un format commun pour tous les objets de seau (par exemple, des fichiers de texte), etc etc. Pour quelque chose comme cela, vous êtes forcé de faire ce que Cody Caughlan simplement répondu. AWS S3 docs est un exemple de code montrant comment le faire avec le SDK AWS pour Java: Liste des Clés à l'Aide du kit SDK AWS pour Java (vous y trouverez aussi le PHP et C# exemples).
-
Élément de la liste de Recherche pour quelque chose dans l'objet des clés contenues dans le seau; S3 n' avez partiel soutien pour de cette, dans le formulaire de permettre préfixe de correspondances exactes + l'effondrement des matches après un délimiteur. Ceci est expliqué plus en détail à la AWS S3 Guide du Développeur. Cela permet, par exemple, pour mettre en œuvre des "dossiers" par le biais de l'aide en tant que clés de l'objet quelque chose comme
folder/subfolder/file.txt
Si vous suivez cette convention, la plupart de la S3 Interfaces graphiques (comme la Console AWS) va vous montrer une vue de dossier de votre seau.
Il y a plusieurs options, aucun n'étant simple "one shot" texte intégral de la solution:
Nom de la clé de la recherche du modèle: à la Recherche des clés avec un bout de ficelle - si vous concevez des noms de clés soigneusement, puis vous peut-être plutôt rapide solution.
Recherche les métadonnées attachées à des touches: lorsque vous publiez un fichier AWS S3, vous pouvez traiter le contenu, d'en extraire certaines méta information et de joindre cette méta informations sous forme d'en-têtes personnalisés dans la clé. Cela vous permet de récupérer des noms de clé et les en-têtes sans besoin de récupérer le contenu complet. La recherche doit être fait sequentialy, il n'y a pas de "sql comme option de recherche" pour ce. Ayant de gros fichiers, cela peut vous sauver beaucoup de trafic réseau et de l'heure.
Stocker les métadonnées sur SimpleDB: comme le point précédent, mais avec le stockage des métadonnées sur SimpleDB. Ici, vous avez sql comme les instructions select. Dans le cas de grands ensembles de données, vous pouvez frapper SimpleDB limites, qui peuvent être surmontés (partition de métadonnées à travers de multiples domaines SimpleDB), mais si vous allez vraiment loin, vous pouvez avoir besoin d'utiliser un autre des métadonnées de niveau de type de base de données.
Séquentielle de recherche de texte intégral du contenu de traitement de toutes les touches une par une. Très lent, si vous avez trop de touches de processus.
Nous sommes le stockage de 1440 versions d'un fichier en une journée (un par minute) pour une couple d'années, à l'aide de versionnées seau, il est facilement possible. Mais l'obtention de certaines anciennes version prend du temps, que l'on a de façon séquentielle go version par version. J'ai parfois l'utilisation CSV simple indice avec les enregistrements, montrant la publication en plus de la version id, avoir cela, j'ai pu sauter à l'ancienne version assez rapidement.
Comme vous le voyez, AWS S3 n'est pas sur son propre conçu pour la recherche en texte intégral, il est simple service de stockage.
Une autre option est de miroir le compartiment S3 sur votre serveur web et traverse localement. Le truc, c'est que les fichiers locaux sont vides et n'est utilisée que comme un squelette. Sinon, les fichiers locaux pourrait tenir utile méta-données qui vous le feriez normalement besoin pour obtenir à partir de S3 (par exemple, la taille du fichier, le type mime, auteur, timestamp, uuid). Lorsque vous fournissez une URL pour télécharger le fichier, de recherche et localement, mais de fournir un lien vers le S3 adresse.
Fichier Local traversant est facile et cette approche pour les S3 de gestion, la langue n'est agnostique. Fichier Local traversant évite aussi le maintien et l'interrogation d'une base de données de fichiers ou des retards dans une série d'API à distance des appels d'authentifier et d'obtenir le contenu du seau.
Vous pouvez permettre aux utilisateurs de télécharger des fichiers directement à votre serveur via FTP ou HTTP, puis le transfert d'un lot de nouvelles et mises à jour des fichiers sur Amazon pendant les heures creuses par juste recursing sur les répertoires pour les fichiers de toute taille. Sur la réalisation d'un transfert de fichier à Amazon, remplacez les fichiers du serveur web avec un vide du même nom. Si un fichier local a tout de la taille du fichier, puis de le servir directement parce que son attente de transfert en lots.