Cette réponse stackoverflow a beaucoup aidé. Cependant, je veux rechercher tous les PDF dans un compartiment donné.
*.pdf
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?
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.
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
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.
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)
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]])