2015-12-10 51 views
6

我知道S3存儲桶沒有真正的目錄,因爲存儲是平坦的。但是可以使用python/boto3創建目錄programmaticaly,但我不知道如何。我看到這對紀錄片:在Amazon S3中使用python創建目錄,boto3

「雖然S3存儲是平的:桶含有鍵,S3可以讓你在你的鑰匙使用分隔符上你的水桶徵收目錄樹結構 例如,如果你命名。鍵'a/b/f',並使用'/'作爲分隔符,那麼S3會認爲'a'是一個目錄,'b'是'a'的子目錄,'f'是一個文件在'b'中。「

我可以創建在一個S3桶只是文件方式:

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

,但我不知道如何創建一個目錄。

+1

答案在您複製的報價單中。你有沒有嘗試過他們告訴你要做的事情? –

回答

5

只需要對密鑰名稱進行一些修改即可。 self.client.put_object(Bucket=bucketname,Key=filename)

這應改爲

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

這就是所有。

8

如果您閱讀API文檔您應該可以執行此操作。

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) 

老實說,它不是一個「真正的目錄」,而是組織的預格式化字符串結構。