web-dev-qa-db-fra.com

Comment rechercher un compartiment Amazon S3 à l'aide de caractères génériques?

Cette réponse stackoverflow a beaucoup aidé. Cependant, je veux rechercher tous les PDF dans un compartiment donné.

  1. Je clique sur "Aucun".
  2. Commencer à écrire.
  3. J'écris *.pdf
  4. Appuyez sur Enter

Rien ne se passe. Existe-t-il un moyen d'utiliser des caractères génériques ou des expressions régulières pour filtrer les résultats de recherche de compartiment via la console graphique S3 en ligne?

15
nu everest

Comme indiqué dans un commentaire, l'interface utilisateur d'Amazon ne peut être utilisée que pour rechercher par préfixe conformément à leur propre documentation:

http://docs.aws.Amazon.com/AmazonS3/latest/UG/searching-for-objects-by-prefix.html

Il existe d'autres méthodes de recherche, mais elles nécessitent un peu d'effort. Juste pour nommer deux options, AWS-CLI application ou Boto pour Python.

Je sais que ce message est ancien, mais il figure en haut de la liste de Google pour la recherche s3 et n'a pas de réponse acceptée. L'autre réponse de Harish est un lien vers un site mort.

18
Michael Hohlios

Recherche AWS CLI: Dans AWS Console, nous pouvons rechercher des objets dans le répertoire uniquement mais pas dans des répertoires entiers, cela aussi avec le nom de préfixe du fichier uniquement (limitation de la recherche S3).

La meilleure façon est d'utiliser AWS CLI avec la commande ci-dessous dans Linux OS

aws s3 ls s3: // nom_seau/--recursive | grep search_Word | coupe -c 32-

Recherche de fichiers avec des caractères génériques aws s3 ls s3: // bucket_name/--recursive | grep * .pdf

7
Tech Support

Vous pouvez utiliser la fonction de copie avec le --dryrun drapeau:

aws s3 ls s3://your-bucket/any-prefix/ .\ --recursive --exclude * --include *.pdf --dryrun

Il afficherait tous les fichiers PDF.

3
user11002455

Si vous utilisez boto3 dans Python il est assez facile de trouver les fichiers. Remplacez 'bucket' par le nom du bucket.

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket')
for obj in bucket.objects.all():
    if '.pdf' in obj.key:
        print(obj.key)
2
Matts

Je l'ai utilisé dans l'un de mes projets, mais c'est un peu de codage en dur

import subprocess
bucket = "Abcd"
command = "aws s3 ls s3://"+ bucket + "/sub_dir/ | grep '.csv'"
listofitems = subprocess.check_output(command, Shell=True,)
listofitems = listofitems.decode('utf-8')
print([item.split(" ")[-1] for item in listofitems.split("\n")[:-1]])
0
Deepak Tripathi