2010-05-06 24 views
0

J'envoie des fichiers à mon compartiment S3 qui sont essentiellement des décharges de bases de données gzippées. Ils sont une date lisible par l'homme ("2010-05-04.dump"), et avec cela, je suis en train de définir un champ de métadonnées à l'heure UNIX de l'image.Sélection de clés basées sur des métadonnées, possible avec Amazon S3?

Je veux écrire un script qui récupère la dernière image du bucket. C'est-à-dire que je veux la clé avec la plus grande valeur de métadonnées de temps unix. Est-ce possible avec Amazon S3, ou n'est-ce pas le mode de fonctionnement de S3?

J'utilise à la fois l'outil de ligne de commande aws et la bibliothèque python boto

Répondre

1

Ici, cela semble fonctionner, mais peut-être pas le plus idéal (utilisant Boto)

latest_key = None 
latest_ts = 0 
for key in bucket.get_all_keys(): 
    # go through all keys and return the one with the higest timestamp 
    ts = key.get_metadata('timestamp') 

    if ts > latest_ts: 
     latest_key = key 
     latest_ts = ts 
+0

Hmm, je ne pense pas que vous pouvez éviter d'itérer à travers toutes les clés. (Mais 'get_metadata' fait-il une autre requête à S3? Si oui, cela pourrait être évité en utilisant simplement les noms de fichiers.) – Jonik

+0

Ah, mais avez-vous potentiellement plusieurs fichiers par jour? Dans ce cas, vous devrez utiliser l'horodatage (ou ajouter du temps aux noms de fichiers). – Jonik

+0

hm il semble que la plupart des gens utilisent simpledb et s3 ensemble lorsque des métadonnées sont impliquées: http://aws.amazon.com/simpledb/usecases_metadata_indexing/ – anvarik