Boto3 S3, sorte de seau par dernière modification

J'ai besoin de récupérer une liste d'éléments de S3 en utilisant Boto3, mais au lieu de retourner ordre de tri par défaut (décroissant) je veux qu'il revienne par ordre inverse.

Je sais que vous pouvez le faire via awscli:

aws s3api list-objects --bucket mybucketfoo --query "reverse(sort_by(Contents,&LastModified))"

et sa faisable via l'INTERFACE utilisateur de la console (pas sûr si cela est fait côté client ou côté serveur)

Je ne peux pas l'impression de voir comment faire cela dans Boto3.

Je suis actuellement en train de récupérer tous les fichiers, puis le tri...mais cela semble exagéré, surtout si je ne se soucient les 10 ou si les plus récentes des fichiers.

Le système de filtre semble être la seule à accepter le Préfixe pour les s3, rien d'autre.

Vous pouvez obtenir tous les objets, obtenir leur date de dernière modification et de les trier en fonction de la date. Découvrez cette question
Le S3 api n'a pas l'appui de l'inscription de cette façon. La CLI (et probablement la console) va chercher tout et ensuite effectuer le tri.
Vous obtenez les données en Python, donc il suffit de trier les données renvoyées. Il n'y a pas besoin de demander boto3 de le faire pour vous, c'est juste une ligne supplémentaire de Python.
le problème est la complexité. pourquoi obtenir des enregistrements N, puis trier des enregistrements N pour obtenir la série Z que vous voulez, quand vous pouvez demander à AWS afin de retourner uniquement Z régler d'abord? même raison, je ne veux pas faire select * from table . et puis la boucle à travers et trouver "où X = 1".
Vous pouvez utiliser subprocess module pour exécuter l'aws cli api qui prend en charge le tri par date.

OriginalL'auteur nate | 2017-06-15