2016-07-22 21 views
0

Ich habe ein s3 Eimer mit einer Struktur wie folgt:Wie kann man mit Boto3 nur eine Schlüsselebene zurückgeben?

bucket 
---key_1 
    ---sub_key_1 
     ---file_a 
    ---sub_key_2 
     ---file_b 
    ---sub_key_3 
     ---file_c 

Wo die Schlüssel alle durch/getrennt sind. Ich möchte einen Boto 3-Befehl ausführen, um nur die Unterschlüssel zurückzugeben. Ich habe ein paar Dinge ausprobiert. Sowohl bei Verwendung der Client und Sitzungsmethoden Boto 3 vor allem um diese konzentriert:

for key in s3_bucket.list(Prefix="key_1/", Delimiter="/"): 
     print(key.key) 

objects = client.list_objects(Bucket=bucket, Prefix="pickles/", Delimiter='/') 

Ich kann entweder das entsprechende Trenn und alle es zurückgibt, ist das Objekt ‚Taster_1‘ oder ich kann das Trennzeichen ausschließen, und ich bekomme alle sub_key Objekte aber auch alle Dateien. Was kann ich tun, um nur die Unterschlüssel zu bekommen?

Antwort

0

Ich habe tatsächlich die Antwort hier gefunden: https://github.com/boto/boto3/issues/134. Die einfachste Möglichkeit besteht darin, den client.list_objects-Aufruf wie oben beschrieben zu verwenden und das CommonPrefixes-Attribut daraus abzurufen.