2015-12-10 29 views
6

So che i bucket S3 non hanno realmente directory perché lo spazio di archiviazione è scarso. Ma è possibile creare directory programmaticamente con python/boto3, ma non so come. Ho trovato questo su un documentario:Creare directory in Amazon S3 usando python, boto3

"Anche se accumulo S3 è piatta: secchi contengono chiavi, S3 permette di imporre una struttura ad albero di directory sul tuo secchio utilizzando un delimitatore nelle vostre chiavi Ad esempio, se il nome a. chiave 'a/b/f', e usa '/' come delimitatore, quindi S3 considererà che 'a' è una directory, 'b' è una sottodirectory di 'a', e 'f' è un file in "b". "

posso creare file solo in un secchio S3 da:

self.client.put_object(Bucket=bucketname,Key=filename) 

ma non so come creare una directory.

+1

La risposta è nella citazione che hai copiato. Hai provato a fare quello che ti hanno detto di fare? –

risposta

5

È necessaria una piccola modifica nel nome della chiave. self.client.put_object(Bucket=bucketname,Key=filename)

questo dovrebbe essere cambiata a

self.client.put_object(Bucket=bucketname,Key=directoryname/filename)

Questo è tutto.

8

Se si legge la documentazione dell'API, si dovrebbe essere in grado di farlo.

import boto3 
s3 = boto3.client("s3") 
BucketName = "mybucket" 
myfilename = "myfile.dat" 
KeyFileName = "https://stackoverflow.com/a/b/c/d/{fname}".format(fname=myfilename) 
with open(myfilename) as f : 
    object_data = f.read() 
    client.put_object(Body=object_data, Bucket=BucketName, Key=KeyFileName) 

Onestamente, non è una "vera e propria directory", ma la struttura della stringa preformat per l'organizzazione.