Recupero dei nomi delle sottocartelle nel bucket S3 da boto3

| | | | | |

Utilizzando boto3, posso accedere al mio bucket AWS S3:

s3 = boto3.resource("s3") bucket = s3.Bucket("my-bucket-name") 

Ora, il bucket contiene la cartella first-level, che a sua volta contiene diverse sottocartelle denominate con un timestamp, ad esempio 1456753904534. Ho bisogno di sapere il nome di queste sottocartelle per un altro lavoro che sto facendo e mi chiedo se potrei farle recuperare da boto3 per me.

Così ho provato:

objs = bucket.meta.client.list_objects(Bucket="my-bucket-name") 

che fornisce un dizionario, la cui chiave "Contents" mi dà tutto il terzo livello file invece delle directory timestamp di secondo livello, infatti ottengo un elenco contenente cose come

{u"ETag": ""etag"", u"Key": first-level/ 1456753904534/part-00014", u"LastModified": datetime.datetime(2016, 2, 29, 13, 52, 24, tzinfo=tzutc()),
u"Owner": {u"DisplayName": " proprietario", u"ID": "id"},
u"Size": size, u"StorageClass": "storageclass"}

puoi vedere che i file specifici , in questo caso vengono recuperati part-00014, mentre vorrei ottenere il nome della directory da solo. In linea di principio potrei eliminare il nome della directory da tutti i percorsi ma è brutto e costoso recuperare tutto al terzo livello per ge t il secondo livello!

Ho anche provato qualcosa riportato qui:

for o in bucket.objects.filter(Delimiter="/"): print(o.key) 

ma non ottengo le cartelle al livello desiderato.

C'è un modo per risolverlo?